CN1399735A - 细粒度转换鉴别 - Google Patents

细粒度转换鉴别 Download PDF

Info

Publication number
CN1399735A
CN1399735A CN00814186A CN00814186A CN1399735A CN 1399735 A CN1399735 A CN 1399735A CN 00814186 A CN00814186 A CN 00814186A CN 00814186 A CN00814186 A CN 00814186A CN 1399735 A CN1399735 A CN 1399735A
Authority
CN
China
Prior art keywords
target instruction
target word
host command
subregion
converted
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
CN00814186A
Other languages
English (en)
Other versions
CN1196994C (zh
Inventor
J·拜恩宁
H·P·安维恩
B·格里斯泰德
D·凯培尔
A·克莱伯
P·赛里斯
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.)
Full Simeida LLC
Transmeta Inc
Original Assignee
Transmeta Inc
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 Transmeta Inc filed Critical Transmeta Inc
Publication of CN1399735A publication Critical patent/CN1399735A/zh
Application granted granted Critical
Publication of CN1196994C publication Critical patent/CN1196994C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/3802Instruction prefetching
    • G06F9/3812Instruction prefetching with instruction modification, e.g. store into instruction stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Medicines Containing Plant Substances (AREA)
  • Liquid Crystal Substances (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)

Abstract

在将指令从目标指令集转换到主机指令集的计算机中,一种用于确定对内存页面的写入是否是针对已经被转换成主机指令的目标指令的方法,包括步骤:检测写到内存子页面,该内存页面存储已经被转换成主机指令的目标指令;检测写入所寻址的内存页面的一个子区域是否存储已经被转换的目标指令;以及,使从被寻址目标指令转换来的主机指令无效。

Description

细粒度转换鉴别
                       发明背景
发明领域
本发明涉及计算机系统,尤其涉及这样一些方法和装置,它们用于检测微处理器尝试动态地将指令从目标转换成主机指令集,以便写到存储已经被转换的目标指令的存储器。
现有技术的历史
最近,开发了一种新的微处理器,该微处理器将一个简单但非常快速的主机处理器(被称作“变体主机(morph host)”)和软件(被称作“代码变体软件(codemorphing software)”)组合起来,以便执行为处理器设计的应用程序,该处理器具有的一个指令集不同于变体主机处理器的指令集。变体主机处理器执行代码变体软件,该软件将应用程序动态地转换成能够实现原来软件的目的的主机处理器指令。当指令被转换时,它们被存储在一个转换缓冲器中,它们在该转换缓冲器中可以被加以执行,而无须进一步转换。虽然程序的初步转换缓慢,但是,一旦被转换,就可取消硬件执行程序通常所需的许多步骤。新的微处理器已经证明其执行转换“目标”程序的速度能够与“目标”处理器(程序为它而设计)一样快。
变体主机处理器包括许多硬件改进,这些改进使跨越目标处理器的已知状态的各个序列的目标指令被转换成主机指令、被存储以便进一步用于转换缓冲器中,并被测试以便确定转换指令是否将正确地执行。这些硬件改进允许缓冲转换执行的效果,直到执行获得成功。当被称作“委托”的一个程序中的执行成功时,内存存储和目标处理器状态被更新。通过将执行返回到目标处理器的已知状态存在的一系列指令的开端,这些硬件改进允许迅速、准确地处理在执行各个序列的主机指令期间发生的例外。将操作返回到目标状态已知的执行中的一个点被称作“重新运行”。Kelly等人的于1998年11月3日转让给本发明受让人的第5,832,205号美国专利“ 用于检测对正在被寻址的一个部件的物 理性质推测失败的微处理器的内存控制器”中描述了新的微处理器。
新的处理器会产生的一个问题是:一些操作系统和目标处理器的应用可以写到存储在存储器中的目标指令。如果发生这种情况,则主机指令不再有效,这些主机指令是已经被重写的目标指令的转换。为了确保不使用无效的主机转换,新的处理器使用被称为“T位”的指示符。T位利用一个物理页面地址被存储在一个转换后备缓冲器(TLB)中。后备缓冲器存储的项目包括最近内存存取的虚拟与实体的内存地址,使存储器被存取的速度比通过页面表格更快。新处理器的TLB中的每个项目包括一个T位。只要被寻址的内存页面上的指令已被转换为主机指令,就设置该T位。如果对由T位保护的内存页面进行写尝试,则生成一个T位例外。T位例外使例外处理程序查找一个数据结构,该数据结构参考从T位所保护的页面上的目标指令转换的主机指令的地址。通过切断TLB项目的T位保护,例外处理程序使这些转换无效。
Kelly等人的于1996年8月22日提交的转让给本发明受让人的系列号为08/702,771的美国专利申请“ 高级微处理器的转换内存保护装置”中描述了关于使用T位的安排。
虽然使用TLB项目中的T位的安排有效地运作于多数情况中,但是,操作中的一些问题仍然保留着。这些问题中的一个问题是:某些目标处理器使用不在存储指令和数据的区域之间进行区别的操作系统。例如,“微软视窗”允许为指令指定的段和为数据指定的其他段被存储在相同的内存页面上。
如果发生这种情况,则尝试写入到这种内存页面上的数据会生成一个T位错误。即使写的数据不表示发生任何目标指令的变化,所产生的例外也会使由特殊T位保护的内存页面上的目标指令的转换变得无效。内存页面上的正确转换的无效大大减缓了新的微处理器的操作。
需要通过取消不受写到被T位保护的内存页面影响的转换的无效,并通过减少所采用的不会导致转换无效的T位陷阱的数量,来提高新的微处理器的操作速度。
                           发明概要
所以,本发明的一个目的是提供一种更快速的、可兼容的微处理器,能够按比其他微处理器更快的速度来运行应用程序和为其他微处理器设计的操作系统。
本发明的这个目的和其他目的在计算机中得以实现,计算机通过一种方法将指令从目标指令集转换到主机指令集,用于确定写到内存页面是否针对已在计算机(将指令从目标指令集转换到主机指令集)中被转换为主机指令的目标指令,包括检测写入到存储目标指令(已被转换为主机指令)的内存页面的各个步骤,检测(写入所寻址的)内存页面的子区域是否存储已被转换的目标指令,并且使从被寻址目标指令转换来的主机指令无效。
通过参考以下详细的描述并结合附图,将更好地理解本发明的这些和其他目的与特点。在附图中,类似的元素在几幅视图中有类似的名称。
                         附图简述
图1是方框图,展示了使用本发明的一种微处理器。
图2是方框图,展示了本发明的一部分的硬件实施。
图3是流程图,展示了本发明的操作。
图4是方框图,展示了用于本发明的实施的主机存储器中的数据结构。
                          详细描述
图1展示了可以利用本发明的微处理器11。第5,832,205号美国专利中详细地描述了所描绘的微处理器。该微处理器包括浮点单元12、整数单元13、是系统存储器的一部分的转换缓冲器14、是系统存储器的另一个部分的目标存储器15,以及是内存管理单元的一部分的转换后备缓冲器16。
如上所述,新的微处理器使用一种独特的方法,用于确保被转换的指令与目标指令(它们从其被转换)保持一致。该方法被称作“T位例外”。一个T位被放置在转换后备缓冲器16中的项目中,以便用信号通知目标存储器15中的一个内存页面(对其尝试写入)存储已经被转换成存储在转换缓冲器14中的主机指令的目标指令。当尝试写入到一个内存页面时,生成一个T位例外。该内存页面存储已被转换的目标指令。
T位的目的是允许被转换的主机指令无效,以便当目标指令(从其生成转换)变化时,转换将不被使用(或者,如果至少被核查,以便在使用之前确定它们是否仍然有效)。“使无效”被用来包括该说明书中的两种意思。但是,利用一些目标处理器(特别是X86种类),允许内存页面存在,该内存页面包括被转换的指令和数据。将数据写到内存页面不会改变该页面上的指令,所以,没有理由使从内存页面上的指令转换的主机指令无效。因此,已设计了一种新的程序,代码变体软件由此可以确定所尝试的写到内存页面是被转换为指令还是数据,并允许写到数据,而不会使该页面上的指令的转换无效。新的程序还限制了页面上的指令写到实际所写的内存页面的各个区域的影响。
实现这一点的本发明的程序提供由T位保护的内存页面的更加细致的颗粒划分。该程序将被保护的页面分成多个尺寸相等的子区域,并存储这种内存页面的每个子区域的指示符。在一个实施例中,指示符形成为多个子区域中的每个子区域提供一个位的掩码,该掩码可以被存储为具有T位保护的内存页面的一部分。被保护的每个子区域的指示符被称作“细粒度T位”。在一个实施例中,该掩码是一个32位字,以便每个细粒度T位保护4096字节内存页面的128字节子区域。关于包括目标指令的每个子区域设置一个细粒度T位。当发生一个T位例外时,例外处理程序测试指示符,以确定是否已经为内存页面(正在对其尝试写入)提供细粒度T位保护。
为了加速测试,正在被存取的地址的较低顺序12位被用来生成一个掩码。该掩码在被寻址的字节的位置处有一个1,(并且,如果被存储的数据足够长,可以进入下一个子区域,则在下一个连续位位置处有一个1)。较低顺序地址位的掩码和细粒度T位掩码被“与”起来。在任何位置产生的一个0指示,为那个子区域设置一个细粒度T位,以便应该生成T位例外。
如果内存页面还没有被分成各个子区域(即,只有目标指令已经被写到该页面),则T位例外被确认。该T位例外使与该页面有关的转换缓冲器中的转换无效。如果内存页面已经被分成各个子区域,以便细粒度T位指示符存在,以及查找表现了写到不是细粒度T位指定的一个或多个子区域,那么,原来的T位例外被软件忽略。如果内存页面已经被分成各个子区域,查找表现写到由一个细粒度的T位(存储指令的一个区域)指定的一个或多个子区域,则原来的T位例外被确认;并且,例外处理程序使存储在转换缓冲器中的主机指令无效,该主机指令从存储在被保护的内存页面上的特殊的子区域中的目标指令转换而来。
可见,细粒度T位保护取消了由新的处理器生成的T位例外的一个重要部分。细粒度T位保护也将被放弃的转换局限于转换被写入的子区域中的指令的转换。这样,发明的程序比经常放弃整个内存页面的速度更快。
即使使用代码变体软件和软件例外处理程序的过程比基本的T位保护更快,也可以进一步对其进行加速。为了加快本发明的过程,已经构造了图2所示的一个硬件实施例。该实施例包括电路20,该电路具有按前述的TLB方式构造的第一TLB 21。该TLB提供的位置用于存储项目,每个项目都包括一个内存页面的虚拟地址、由虚拟内存地址寻址的信息实际被存储于一个物理页面地址,以及一个T位。如果一个有效的内存页面存储已经被转换的目标指令,则为TLB 21中的项目设置T位。
电路20也包括被称作“细粒度T位查找表”的第二个TLB类结构23。由于存储已经被转换的目标指令的很少的内存页面可以被期望也存储数据,因此,细粒度T位查找表格23具有的项目数量通常比TLB 21少。表格23提供的位置用于存储项目,每个项目包括一个内存页面的物理页面地址,它存储数据和已经被转换的目标指令。表格23的每个项目也存储软件实施例中所用的一套相同的指示符(例如,一个32位字掩码),指示实际由细粒度T位保护的子区域。图3中的流程图展示了电路20的操作。当尝试写入到内存页面时,搜索TLB 23,以确定关于被寻址的内存页面的项目是否存在于表中。为了实现这一点,对包括虚拟内存地址的项目进行搜索。如果存在这种项目,则发现该页面的物理地址,并确定关于该页面的T位的条件。如果没有设置T位,则内存页面只是存储已经被转换的目标指令的页面,以便它实际上不是具有T位保护的页面。如果内存页面存储已经被转换的目标指令,以便它得到被设置的T位的保护,则为该页面生成一个T位陷阱;项目的物理地址被发送到细粒度T位查找表格23。
为包括物理地址的一个项目在表格23中进行搜索。如果包括物理地址的一个项目不存在于表格23中,则或者(1),内存页面不存储数据和被转换的目标指令,或者(2),内存页面不存储数据和被转换的目标指令,但是,关于内存页面的一个项目还没有被输入表格23。在第一种情况下,由于TLB 21中的项目中所设置的T位指示该页面包括被转换的目标指令,所以,生成一个T位陷阱例外,它使存储在涉及该页面的转换缓冲器中的转换无效。在第二种情况下,关于物理地址的项目被载入表格23,写入被再试。
如果细粒度T位查找表23中有一击,则对页面的特殊子区域实行测试,以确定被寻址的子区域是否由一个细粒度T位保护。如果没有为子区域设置一个细粒度T位,则不生成T位陷阱例外;并且,数据被存储到内存页面。如果为子区域设置一个细粒度T位,则生成一个T位陷阱例外,它使内存页面的特殊子区域、TLB 21中的项目,以及被存储在转换缓冲器(涉及这个内存页面的特殊的子区域)中的转换无效。
为了确定是否为被寻址的区域设置一个细粒度T位,电路20的表格23中的一个物理地址匹配使指示由细粒度T位保护的子区域的掩码被放置在本发明的一个实施例中的寄存器25中。然后,虚拟地址的较低顺序位被用来确定被寻址的子区域是否受到细粒度T位的保护。这些较低顺序位定义正在由被寻址的内存页面内的写访问进行存取的地址。该页面的特殊子区域(写访问对其被寻址)与寄存器25中的掩码的32位T位指示符相匹配,以确定地址在由细粒度T位保护的一个子区域还是多个子区域内。如果写到由细粒度T位保护的一个子区域,则陷阱会导致生成一个T位例外,使特殊的子区域、存储在那些子区域中的指令的转换和TLB 21中被寻址的项目无效。
为了确定内存页面的被寻址子区域是否具有细粒度T位保护,本发明的实施例使用较低的12个地址位中的5个最高的位,以便确定32个子区域中的哪个子区域有关。对于4096个字节的一个页面而言,每个这样的子区域包括128个字节。当已经确定特殊的被寻址的子区域时,地址的较低顺序7位被用来确定在子区域中被寻址的具体的字节。当已经确定被寻址的字节时,测试为掩码中被寻址的子区域保留指示符的位位置,以便确定是否设置一个细粒度T位。该掩码(寄存器25中的掩码)指示由细粒度T位保护的子区域。由于一次写入可以包括一个实施例中的8个字节,因此,所存储的数据的长度(减去1)被加到子区域内的开始字节地址,以确定该写入是否越入下一个子区域。如果该写入越入下一个子区域,则也测试掩码,以确定是否为下一个子区域设置一个细粒度T位。
硬件采用被放置在T位掩码寄存器中的位矢量,并通过12位页面偏移的上面5个将它向下移动。这将关于被写入的特殊子区域的位移入低顺序位位置,并将关于下一个子区域的位移入下一个低顺序位位置。然后,测试一个(或者,如果下一个子区域已经被写入,则两个)低顺序位。如果设置了其中的任何一个,则产生一个T位例外。
系列号为08/702,771的专利申请中所描述的基本的T位保护使用包括主机指令的地址的一种数据结构,该主机指令已经从存储在由T位保护的区域中的目标指令转换而成。为了使用由本发明适当提供的T位保护的各个细粒度方面,按图4所示的方式来修改这个数据结构。代码变体软件使用被称作“物理页面映像”的一排项目。物理页面映像中的项目由物理地址的高顺序位来检索。每个项目是到数据结构的一个指示符,这些数据结构识别转换来自对应的物理页面的目标指令的转换。物理页面上的目标指令的每个转换都具有一个细粒度T位指示符(例如,32位字掩码),该指示符识别包括由细粒度T位保护的被转换目标指令的内存页面的子区域。当有一个T位例外时,按上述方式来使用从存储地址的较低顺序位和存储尺寸生成的掩码,以便为每个转换确定它是否转换来自物理页面的被存取子区域的指令。
物理页面映像中的每个项目指向到转换的指示符的清单。利用每个转换,它联合了一个T位掩码。如果页面的这种清单上的转换的T位掩码是被“或”一起,则形成该页面的一个T位掩码。这些可以被存储和使用,来快速填充表格23和将一个新的页面载入表格23;只要一个新的转换被加到清单,或者只要使清单上的一个转换无效,就重新计算掩码。
应该注意,当一个目标指令或目标指令的序列被转换时,生成一个序列的主机指令。这些主机指令经常被记录和预定,以便提高计算机操作的速度。所以,在本发明的一个实施例中,当一个转换由于一个存储而无效时,与该转换有关的所有序列的主机指令都无效,甚至转换来自没有被该存储访问的区域的目标指令的转换也无效。
可以使用各种选择性的实施例,而不是所示的较佳实施例。例如,利用虚拟地址而非物理地址,可以存取T位缓冲器23。这种修改将允许缓冲器21和23在相同的时钟中被存取。还可以有另一个实施例,它将取消缓冲器23,并存储整个T位掩码,而非TLB 21中的单个位。精通该技术领域的人将面临其他特殊的实施例。
通过创建被提供有细粒度T位保护的不同尺寸的子区域,可以进一步改进本发明。实现这个结果的一个实施例将子区域分成更小的子区域,这些更小的子区域也按与上述较大子区域相同的方式被提供细粒度T位保护,并且提供创建类似于表格23的一个额外表格的电路,以及用于确定尝试存储是否是到较小子区域中被保护的子区域的有关电路。
虽然已经按照一个较佳实施例描述了本发明,但是,将理解,在不脱离本发明的精神和范围的前提下,精通该技术领域的人可以进行各种修改和变化。所以,应该按照以下的权利要求来衡量本发明。

Claims (20)

1.一种在将指令从目标指令集转换到主机指令集的计算机中的用于确定对内存页面的写入是否是针对已经被转换成主机指令的目标指令的方法,其特征在于所述方法包括以下步骤:
检测对内存页面的写入,该内存页面存储已经被转换成主机指令的目标指令,
检测对该写入寻址的该内存页面的一个子区域是否存储已经被转换的目标指令,以及,
使从被寻址目标指令转换来的主机指令无效。
2.如权利要求1所述的方法,其中,检测对内存页面的写入,该内存页面存储已经被转换成主机指令的目标指令的步骤包括以下步骤:
存储每个内存页面的指示符,该内存页面存储已经被转换成主机指令的目标指令,以及
当尝试对每个这样内存页面写入时,检测该指示符。
3.如权利要求2所述的方法,其中,检测该内存页面的对该写入寻址的一个子区域是否存储已经被转换的目标指令的步骤包括以下各个步骤:
存储内存页面的每个子区域的指示符,该内存页面存储已经被转换成主机指令的目标指令,以及
当尝试对这种内存页面的每个这样子区域写入时,检测这种子区域的指示符。
4.如权利要求2所述的方法,其中,使从被寻址目标指令转换来的主机指令无效的步骤包括使从被寻址目标指令转换来的所有主机指令无效,所述目标指令被存储在只存储目标指令的内存页面上。
5.如权利要求2所述的方法,其中,使从被寻址的目标指令转换来的主机指令无效的步骤包括只使从被寻址目标指令转换来的主机指令无效,所述目标指令被存储在对写入寻址的内存页面的一个子区域上。
6.如权利要求2所述的方法,其中,使从被寻址目标指令转换来的主机指令无效的步骤包括使作为从被寻址目标指令的转换的一部分的所有主机指令无效,所述目标指令被存储在写入所寻址的内存页面的任何子区域上。
7.一种将指令从目标指令集转换到主机指令集的计算机,其特征在于所述计算机包括:
用于执行主机指令的处理单元,
系统存储器,
用于控制对系统存储器的存取的内存管理单元,包括:
用于指示系统存储器的各个部分的装置,这些部分存储已经被转换成主机指令的目标指令,
用于指示系统存储器的各个部分的子区域的装置,这些子区域存储已经被转换成主机指令的目标指令,
用于当尝试写入到系统存储器的这些部分时,使从存储在系统存储器的各个部分中的目标指令转换来的主机指令无效的装置,所述各个部分只存储目标指令,以及,
用于当尝试写入到系统存储器的这些子区域时,使从存储在系统存储器的各个部分的子区域中的目标指令转换来的主机指令无效的装置,所述子区域存储目标指令。
8.如权利要求7所述的计算机,其特征在于:还包括当尝试写入到系统存储器的这些子区域或子区域时,用于使从存储在系统存储器的子区域的子区域中的目标指令转换来的主机指令无效的装置,所述子区域存储目标指令。
9.如权利要求7所述的计算机,其中,用于指示存储已经被转换的目标指令的系统存储器的各个部分的装置包括:
一转换后备缓冲器,用于存储可通过系统存储器的各个部分的虚拟地址来寻址的项目,每个项目包括系统存储器的一部分的一个物理地址和被转换目标指令是否存储在该部分中的指示。
10.如权利要求7所述的计算机,其中,用于指示存储已经被转换成主机指令的目标指令的系统存储器的各个部分的子区域的装置包括:
用于存储可通过物理地址来寻址的系统存储器的各个部分的项目的一张表格,每个项目包括区别其中存储有被转换目标指令的子区域的指示符。
11.如权利要求10所述的计算机,其中:
子区域的尺寸相等,以及,
每个项目中的指示符是位位置,其条件区别被转换目标指令的存储,而其位置指示该部分的子区域。
12.如权利要求11所述的计算机,其中,用于当尝试写入到这些子区域时使存储目标指令的系统存储器的各个部分的子区域中所存储的主机指令无效的装置包括:
响应于写到存储已经被转换成主机指令的目标指令的一个子区域的例外处理装置,用于使从这些子区域中所存储的目标指令转换来的主机指令无效。
13.如权利要求12所述的计算机,其特征在于:还包括当尝试写入到这些部分时,用于使系统存储器的各个部分无效的例外处理装置,这些部分存储从已经被转换的目标指令转换来的主机指令。
14.一种在将指令从目标指令集转换到主机指令集的计算机中用于控制对系统存储器的存取的内存管理单元,其特征在于包括:
用于指示系统存储器的各个部分的装置,这些部分存储已经被转换成主机指令的目标指令,
用于指示系统存储器的各个部分的子区域的装置,这些子区域存储已经被转换成主机指令的目标指令,
当尝试写入到系统存储器的这些部分时,用于使从系统存储器的各个部分中所存储的目标指令转换来的主机指令无效的装置,这些部分只存储目标指令,以及,
当尝试写入到系统存储器的这些子区域时,用于使从系统存储器的各个部分的子区域中所存储的目标指令转换来的主机指令无效的装置,这些子区域存储目标指令。
15.如权利要求14所述的内存管理单元,其特征在于:还包括当尝试写入到系统存储器的这些子区域或子区域时,用于使从系统存储器的子区域的子区域中所存储的目标指令转换来的主机指令无效的装置,这些子区域存储目标指令。
16.如权利要求14所述的内存管理单元,其中,用于指示存储已经被转换成主机指令的目标指令的系统存储器的各个部分的装置包括:
一转换后备缓冲器,用于存储可通过系统存储器的各个部分的虚拟地址来寻址的项目,每个项目包括系统存储器的一部分的物理地址和被转换目标指令是否存储在该部分中的指示。
17.如权利要求14所述的内存管理单元,其中,用于指示存储已经被转换成主机指令的目标指令的系统存储器的各个部分的子区域的装置包括:
用于存储可通过物理地址来寻址的系统存储器的各个部分的项目的一张表,每个项目包括区别其中存储有被转换目标指令的子区域的指示符。
18.如权利要求17所述的内存管理单元,其中:
子区域的尺寸相等,以及
每个项目中的指示符是位位置,其条件区别被转换目标指令的存储,而其位置指示该部分的子区域。
19.如权利要求16所述的内存管理单元,其中,当尝试写入到这些子区域时用于使存储目标指令的系统存储器的各个部分的子区域中所存储的主机指令无效的装置包括:
响应于写到存储了已经被转换成主机指令的目标指令的一个子区域的例外处理装置,用于使从这些子区域中所存储的目标指令转换来的主机指令无效。
20.如权利要求19所述的内存管理单元,其特征在于:还包括当尝试写入到这些部分时,用于使系统存储器的各个部分无效的例外处理装置,这些部分存储从已经被转换的目标指令转换来的主机指令。
CNB00814186XA 1999-10-13 2000-09-06 采用细粒度转换鉴别的方法和装置 Expired - Lifetime CN1196994C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/417,356 US6363336B1 (en) 1999-10-13 1999-10-13 Fine grain translation discrimination
US09/417,356 1999-10-13

Publications (2)

Publication Number Publication Date
CN1399735A true CN1399735A (zh) 2003-02-26
CN1196994C CN1196994C (zh) 2005-04-13

Family

ID=23653666

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB00814186XA Expired - Lifetime CN1196994C (zh) 1999-10-13 2000-09-06 采用细粒度转换鉴别的方法和装置

Country Status (9)

Country Link
US (1) US6363336B1 (zh)
EP (1) EP1240582B1 (zh)
JP (2) JP4275884B2 (zh)
KR (1) KR100573446B1 (zh)
CN (1) CN1196994C (zh)
AT (1) ATE377212T1 (zh)
CA (1) CA2384254C (zh)
DE (1) DE60036960T2 (zh)
WO (1) WO2001027743A1 (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US6826748B1 (en) 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
US8127121B2 (en) * 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US8121828B2 (en) * 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
US7111290B1 (en) * 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US7761857B1 (en) 1999-10-13 2010-07-20 Robert Bedichek Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts
US6845353B1 (en) 1999-12-23 2005-01-18 Transmeta Corporation Interpage prologue to protect virtual address mappings
US7680999B1 (en) * 2000-02-08 2010-03-16 Hewlett-Packard Development Company, L.P. Privilege promotion based on check of previous privilege level
US6594821B1 (en) 2000-03-30 2003-07-15 Transmeta Corporation Translation consistency checking for modified target instructions by comparing to original copy
US6615300B1 (en) 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
US6826682B1 (en) 2000-06-26 2004-11-30 Transmeta Corporation Floating point exception handling in pipelined processor using special instruction to detect generated exception and execute instructions singly from known correct state
GB2393274B (en) * 2002-09-20 2006-03-15 Advanced Risc Mach Ltd Data processing system having an external instruction set and an internal instruction set
US7310723B1 (en) 2003-04-02 2007-12-18 Transmeta Corporation Methods and systems employing a flag for deferring exception handling to a commit or rollback point
US6925928B2 (en) * 2003-09-18 2005-08-09 Anthony Fox Trash compactor for fast food restaurant waste
JP4520790B2 (ja) * 2004-07-30 2010-08-11 富士通株式会社 情報処理装置およびソフトウェアプリフェッチ制御方法
US8413162B1 (en) 2005-06-28 2013-04-02 Guillermo J. Rozas Multi-threading based on rollback
US7774583B1 (en) 2006-09-29 2010-08-10 Parag Gupta Processing bypass register file system and method
US7478226B1 (en) * 2006-09-29 2009-01-13 Transmeta Corporation Processing bypass directory tracking system and method
US8006055B2 (en) 2008-03-04 2011-08-23 Microsoft Corporation Fine granularity hierarchiacal memory protection
JP5246014B2 (ja) * 2009-04-22 2013-07-24 富士通株式会社 仮想化プログラム、仮想化処理方法及び装置
KR20170066681A (ko) 2012-12-27 2017-06-14 인텔 코포레이션 이진 변환된 자가 수정 코드 및 교차 수정 코드의 처리
US9081707B2 (en) * 2012-12-29 2015-07-14 Intel Corporation Apparatus and method for tracking TLB flushes on a per thread basis
US9411600B2 (en) * 2013-12-08 2016-08-09 Intel Corporation Instructions and logic to provide memory access key protection functionality

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4589092A (en) * 1983-12-12 1986-05-13 International Business Machines Corporation Data buffer having separate lock bit storage array
US4638462A (en) * 1985-01-31 1987-01-20 International Business Machines Corporation Self-timed precharge circuit
US4794522A (en) * 1985-09-30 1988-12-27 International Business Machines Corporation Method for detecting modified object code in an emulator
EP0425771A3 (en) * 1989-11-03 1992-09-02 International Business Machines Corporation An efficient mechanism for providing fine grain storage protection intervals
CA2078310A1 (en) * 1991-09-20 1993-03-21 Mark A. Kaufman Digital processor with distributed memory system
US5437017A (en) * 1992-10-09 1995-07-25 International Business Machines Corporation Method and system for maintaining translation lookaside buffer coherency in a multiprocessor data processing system
US5548746A (en) * 1993-11-12 1996-08-20 International Business Machines Corporation Non-contiguous mapping of I/O addresses to use page protection of a process
US5781750A (en) * 1994-01-11 1998-07-14 Exponential Technology, Inc. Dual-instruction-set architecture CPU with hidden software emulation mode
US5577231A (en) * 1994-12-06 1996-11-19 International Business Machines Corporation Storage access authorization controls in a computer system using dynamic translation of large addresses
US5560013A (en) * 1994-12-06 1996-09-24 International Business Machines Corporation Method of using a target processor to execute programs of a source architecture that uses multiple address spaces
US5832205A (en) * 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
US6199152B1 (en) * 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
US6009516A (en) * 1996-10-21 1999-12-28 Texas Instruments Incorporated Pipelined microprocessor with efficient self-modifying code detection and handling
US6243668B1 (en) * 1998-08-07 2001-06-05 Hewlett-Packard Company Instruction set interpreter which uses a register stack to efficiently map an application register state

Also Published As

Publication number Publication date
JP2006244516A (ja) 2006-09-14
WO2001027743A1 (en) 2001-04-19
ATE377212T1 (de) 2007-11-15
US6363336B1 (en) 2002-03-26
EP1240582A4 (en) 2005-08-31
EP1240582A1 (en) 2002-09-18
CN1196994C (zh) 2005-04-13
DE60036960T2 (de) 2008-08-14
EP1240582B1 (en) 2007-10-31
CA2384254A1 (en) 2001-04-19
JP4417346B2 (ja) 2010-02-17
CA2384254C (en) 2004-11-02
JP4275884B2 (ja) 2009-06-10
KR100573446B1 (ko) 2006-04-26
JP2003511788A (ja) 2003-03-25
DE60036960D1 (de) 2007-12-13
KR20020039685A (ko) 2002-05-27

Similar Documents

Publication Publication Date Title
CN1196994C (zh) 采用细粒度转换鉴别的方法和装置
EP0912942B1 (en) Apparatus and method for assisting exact garbage collection by using a stack cache of tag bits
US5893931A (en) Lookaside buffer for address translation in a computer system
JP3618385B2 (ja) データをバッファリングする方法およびそのシステム
JP2618175B2 (ja) キャッシュ・アクセスのための仮想アドレス変換予測の履歴テーブル
JPH04232551A (ja) 多重仮想アドレス変換方法及び装置
JPH0564814B2 (zh)
WO2012076391A1 (en) Vector gather buffer for multiple address vector loads
GB2247546A (en) Predictive caching system
US4731740A (en) Translation lookaside buffer control system in computer or virtual memory control scheme
CN1726477A (zh) 用于预取和存储器管理的页描述符
US11327903B2 (en) Multiple guard tag setting instruction
JPH07104816B2 (ja) コンピュータシステムを動作する方法及びコンピュータシステムにおけるメモリ管理装置
US6449713B1 (en) Implementation of a conditional move instruction in an out-of-order processor
US6519684B1 (en) Low overhead method for selecting and updating an entry in a cache memory
US6553469B2 (en) Memory record update filtering
JP7349437B2 (ja) メモリ・アクセスにおける保護タグ・チェックの制御
EP0726525A2 (en) Method and system for efficient memory management in a data processing system utilizing a dual mode translation lookaside buffer
CN1016830B (zh) 利用存取和故障逻辑信号保护主存储器单元的设备和方法
US5881276A (en) Manipulation of protected pages to reduce conditional statements
JP2542565B2 (ja) 分岐予測制御方式
JPH06187244A (ja) アドレス変換バッファ機構
JPH0385636A (ja) 命令先行制御装置
Matthews et al. Matching hardware to LISP yields peak performance
JPS6337416B2 (zh)

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
ASS Succession or assignment of patent right

Owner name: TRANSMITAR CO., LTD

Free format text: FORMER OWNER: TRANSMITAR CO., LTD.

Effective date: 20091030

Owner name: KNOWLEDGE VENTURE CAPITAL ROMPLAST-14 O., LTD

Free format text: FORMER OWNER: TRANSMITAR CO., LTD

Effective date: 20091030

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20091030

Address after: Nevada

Patentee after: TRANSMETA Corp.

Address before: California, USA

Patentee before: Full simeida LLC

Effective date of registration: 20091030

Address after: California, USA

Patentee after: Full simeida LLC

Address before: California, USA

Patentee before: Transmeta Corp.

CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20050413