CN1682200A - 带有根据页面大小指示符而进行散列的局部标记的翻译后援缓冲器 - Google Patents

带有根据页面大小指示符而进行散列的局部标记的翻译后援缓冲器 Download PDF

Info

Publication number
CN1682200A
CN1682200A CNA038215691A CN03821569A CN1682200A CN 1682200 A CN1682200 A CN 1682200A CN A038215691 A CNA038215691 A CN A038215691A CN 03821569 A CN03821569 A CN 03821569A CN 1682200 A CN1682200 A CN 1682200A
Authority
CN
China
Prior art keywords
virtual address
translation
row
hash
address
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
CNA038215691A
Other languages
English (en)
Other versions
CN100555248C (zh
Inventor
P·斯特拉维斯
J·-W·范德瓦尔德特
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.)
Nytell Software LLC
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN1682200A publication Critical patent/CN1682200A/zh
Application granted granted Critical
Publication of CN100555248C publication Critical patent/CN100555248C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control

Abstract

公开了一种利用RAM和可合成逻辑电路形成的翻译后援缓冲器(TLB)。所述TLB在可合成逻辑内部提供用于把若干存储单元组合成对的逻辑,对这些单元必须进行搜索以找到从收到的虚拟地址到物理地址的译本。所述逻辑提供了用于把接收到的虚拟地址散列的散列电路,并且利用散列后的虚拟地址来对RAM变址以便对提供所述译本的RAM内的行进行定位。

Description

带有根据页面大小指示符而进行散列的局部标记的翻译后援缓冲器
本发明涉及翻译后援缓冲器的领域,更具体而言,涉及用于快速设计周期的翻译后援缓冲器体系结构。
现代的微处理器系统典型地运用虚拟寻址。虚拟寻址使系统能有效地创建比实际的物理存储空间更大的虚拟存储空间。把实际的物理存储空间分解成虚拟存储空间这一过程称为分页(paging)。分页将物理存储空间的线性地址空间分解为称作页面的固定块。页面允许利用较小的物理的主存储器加上低廉的后台存储器来实施大容量的线性地址空间。这种配置称为″虚拟存储″。分页允许通过与后台存储器来回进行交换的按页面管理存储器来实施虚拟存储。分页带来了另外的优点,包括减少了主存储器碎片、对不同页面有可选择的存储器写入策略,和为不同的页面所用的可变化的存储器保护方案。典型情况下,分页机制的出现对应用程序而言是透明的。
页面的大小是灵活性和性能之间的折衷。小的页面大小允许在虚存系统上进行更精确控制,不过会因分页操作而增加了开销。因此,许多CPU都支持页面大小的混合,例如,一个特定的MIPS实施方案支持4kB、16kB、64kB、256kB、1MB、4MB和16MB页面的任意混合。
处理器继而能够有利地使用虚拟地址在虚拟地址空间中操作。然而,常常必须将这些虚拟地址翻译成物理地址——实际的存储位置。实现将虚拟地址翻译成物理地址的一种方式就是:使用在主存储器中经常访问的和存储的翻译表。翻译表是存储在主存储器中的,因为它们在大小方面通常很大。令人遗憾的是,对存储在主存储器中的翻译表的经常访问势必会减慢总体的系统性能。
为了避免需要经常访问主存储器中的翻译表以实现地址翻译,现代的微处理器系统往往利用翻译后援缓冲器(TLB)来存储或高速缓存最近生成的虚拟地址到物理地址的译本。TLB是一种特殊类型的高速缓冲存储器。正如其它类型的高速缓冲存储器的情况一样,TLB典型地是由专门设计成可被快速访问的相对少量的存储器组成的。TLB典型地包括标记阵列和数据阵列两者,正如在高速缓冲存储器中提供的那样。在标记阵列内部,每个标记行都存储一个虚拟地址。然后,使这个标记行与数据阵列中对应的数据行相关联,在所述数据阵列中存储有对应虚拟地址的物理地址译本。因此,在从主存储器中的翻译表中寻找虚拟地址的译本之前,处理器首先查询TLB以确定虚拟地址的物理地址译本目前是否存储在该TLB中。如果虚拟地址和对应的物理地址都存储了在TLB中,那么所述TLB就在其输出端口处提供对应的物理地址,并且避免了消耗时间与资源的对主存储器的访问。因此为了简化TLB的操作并且减少变址需求,在TLB内通常提供一个内容可寻址存储器(CAM)。CAM是并行的模式匹配电路。在一个匹配操作模式中,所述CAM允许并行地搜索所有它的数据以查找匹配。
令人遗憾的是,常规的TLB需要定制的电路设计技术以实现CAM。利用定制的电路设计不是有利的,因为每个TLB及相关的CAM都需要大量的设计工作以便在处理器系统设计中实现相同的目的。当然,当处理器缺少CAM电路时,来自于处理器的信号将离开芯片而向CAM传送,从而导致时延。
因此,本发明的一个目的是,提供一种由传统可合成电路块构成的CAM体系结构。
依照本发明,提供一种翻译后援缓冲器(TLB),它包括:至少一个输入端口,用于接收虚拟地址的一部分;
随机存取存储器;一组寄存器;和可合成逻辑,用于根据所接收到的部分虚拟地址确定散列值以及用于将该散列值与寄存器组内已存储的一个散列值进行比较以确定这样的可能性,即在随机存取存储器内的某一行内存储着与虚拟地址相关联的物理地址并且与来自寄存器组中的一个寄存器相关联,在所述寄存器内部存储有所述散列值。
依照本发明的一个方面,提供了一种翻译后援缓冲器,包括:随机存取存储器;与存储器中一行相关联的第一寄存器;和散列电路,用于接收与一个其译本目前被存储在该存储器中的虚拟地址不同的虚拟地址,用于确定散列值和用于在第一寄存器中存储散列值;并且该散列电路用于在存储器的所述行中存储虚拟地址及其译本。
依照本发明的又一个方面,提供了一种翻译后援缓冲器,包括:RAM;和可合成逻辑,用于根据虚拟地址来确定RAM内部的至少一个可能的地址,以固定的关系对所述RAM进行搜索以查找与虚拟地址相关联的物理地址,该至少一个可能的地址是RAM内的一个仅有的已知地址以外的地址,它以固定的关系在所述RAM中存储与虚拟地址相关联的物理地址。
依照本发明的又一个方面,提供了一种为包含RAM和可合成逻辑的翻译后援缓冲器实现虚拟地址查找功能的方法,包括以下步骤:向可合成逻辑提供虚拟地址;将所提供的虚拟地址散列以提供散列结果;
根据散列结果确定在RAM内部的存储位置,相对于该位置来存储虚拟地址标识符和与之相关的物理地址;
将虚拟地址与虚拟地址标识符进行比较以确定物理地址是否对应于所提供的虚拟地址;并且当物理地址与所提供的虚拟地址相对应时,提供物理地址以作为输出值。
现在将参照附图来描述本发明,在附图中:
图1说明了现有技术中的SRAM电路的半导体管实施方案;
图1b说明了现有技术中的CAM电路的半导体管实施方案;
图2说明了现有技术中的从虚拟地址(VA)到物理地址(PA)的翻译过程;
图3说明了结合直接映射的高速缓冲存储器所实现的现有技术从VA到PA的翻译过程;
图4a总体上说明了利用可合成逻辑元件和随机存取存储器形成的翻译后援缓冲器;
图4b更详细地说明了由可合成逻辑元件形成的翻译后援缓冲器;
图4c概述了TLB的操作所采取的步骤;
图5更详细地说明了散列电路;和
图6说明了图5中所示的散列电路的变形。
CAM电路包括结构上类似于SRAM电路的存储电路。然而,CAM电路还包括搜索电路,它提供了并行检索操作模式的增添的益处,因此能够实现利用硬件并行地搜索CAM的内容。当为特定的数据值而搜索CAM时,所述CAM在CAM内找到那个数据值的匹配时提供匹配信号。CAM与SRAM之间的主要区别就在于:在CAM中,将数据提交给表示虚拟地址的CAM并且返回与所述数据有关的地址,而在SRAM中,向SRAM提供地址并且返回在那个地址上所存储的数据。
CAM的信元是这样排列的,使得每排信元都保存一个存储地址,并且那排信元通过匹配行而连接到数据阵列的对应字行上以便当在那个匹配行上发生匹配时能够实现那个字行中的数据阵列的存取。在完全关联的高速缓冲存储器中,CAM的每一排都保存对应的主存储位置的全地址,并且输入到CAM需要输入所述全地址。
Steven A Guccione等人的名为″A Reconfigurable ContentAddressable Memory(可重新配置的内容可寻址的存储器)″的现有技术出版物中,论述了FPGA内部实施CAM的方式。正如在现有技术的图1中看到的那样,在半导体管级别上,CAM电路101的实施方式非常类似于标准SRAM 100的实施方式。CAM和SRAM电路两者差不多是相同的,除增加了三个匹配半导体管103外,每一个都具有6个半导体管102,所述这三个匹配半导体管提供了CAM 101的并行检索能力。令人遗憾的是,使用标准的可编程逻辑装置并不方便于实现这类半导体管层电路。
在该现有技术的出版物中,论述了以FPGA实现的CAM。利用门级别的逻辑来实现CAM往往会导致不合理的CAM大小。在CAM内部触发器被用作为数据存储元件,其结果是利用FPGA实现的可达到的CAM电路的大小要取决于FPGA内可用的触发器的数量。以FPGA实现CAM会迅速地耗尽许多FPGA资源,因而不是一个可行的解决方案。令人遗憾的是,这已经导致早先的设计者推断只能在半导体管级别上高效地实现所述CAM。
该现有技术的出版物还提出在FPGA中使用查找表(LUT)来实现CAM。不是在FPGA内使用触发器来存储需要匹配的数据,这种实施方式提出了使用LUT来存储需要匹配的数据。通过使用LUT而不是使用触发器,可以得到更小的CAM结构。
令人遗憾的是,利用可合成元件来形成CAM不容易被实现,所以提供CAM的现有技术的处理器在其内具备CAM核心。在处理器内提供CAM核心不适当地使制造出的电路很昂贵,因为增加了设计复杂性。这类额外的设计复杂性不适合于小批量定制设计的处理器。
图2说明了从虚拟地址(VA)201到物理地址(PA)202的翻译过程。所述VA 201是32位地址,VA[31:0],而所述PA 202也是32位地址PA[31:0]。所述VA具有两个部分:虚拟页面号(VPN)203和页面偏移量(PO)204。所述VPN 203通常位于VA 201的较高部分,而所述PA 202通常位于较低部分,不过这不是必须的。典型地讲,对于32位的寻址方案而言,所述VPN是20位,而所述PA是12位。所述PA或较低的12位直接翻译成PA。所述VPN 203用于对TLB 205变址以便从中检索物理页面号(PPN)206。换句话说,所述VPN 203经历到PPN 206的翻译。将PA 202的较高部分中的PPN 206和PO组合成PA的较低部分提供了从VA到PA的译本。
图3说明了结合直接映射的高速缓冲存储器301所实现的从VA 201到PA 202的翻译过程。在翻译周期的开始,利用VA来访问高速缓冲存储器301和TLB 205两者。利用VA的页面偏移量部分来访问高速缓冲存储器301-该页面偏移量是翻译过程中未被修改的地址的部分。使用页面偏移量来对高速缓冲存储器301中所找到的标记阵列302和数据阵列303进行变址,其中使用所述页面偏移量来对高速缓冲存储器301内部的超高速缓冲存储器行302a进行变址。对TLB的访问是利用VA 201的VPN部分203执行的。所述TLB 205典型地包括TLB标记阵列304和TLB数据阵列305。TLB标记阵列304和TLB数据阵列305两者都包含来自于VPN 203的那些位,以便当向这些阵列中的每一个提供VPN时,构成VPN的那些位与那些存储在阵列304、305内部的位进行比较以定位TLB 205内的项。
一旦访问TLB数据阵列305并且在VPN和TLB数据阵列305a内的项之间发现匹配,就检索PPN 206并将所述PPN 206提供给高速缓冲存储器301并且使用所述PPN 206与从标记阵列302中检索出的标记302a进行比较。匹配表示高速缓存″命中″306。如果在VPN 203与TLB标记阵列304a内的项之间发现匹配,那么就生成TLB命中信号307。照此,访问高速缓存仅仅利用了PPN 206的各个位。上述示例说明了直接映射式高速缓冲存储器的使用;然而,同样的VA到PA的翻译本也适用于按组相关的高速缓存。当使用按组相关的高速缓存时,本领域技术人员认识到的是,高速缓存路线的大小小于或等于虚拟页的大小。
令人遗憾的是,当在SRAM中实现TLB时,要求对存储器作穷举搜索以支持CAM功能。因此,当TLB具有1024个虚拟地址及其对应的物理地址的存储器时,每一次地址翻译都需要多达1024次的存储器存取和比较操作。这类CAM实施方式是不切实际的,因为性能随CAM的大小而线性下降。
图4a总体上说明了利用可合成逻辑元件499和随机存取存储器(RAM)410所形成的TLB 400。经由VPN_IN输入端口450提供用于翻译的VPN,其中位VPN_IN[31:12]是从VA[31:0]提供到这个输入端口450的。经由CP0_PAGE_MASK输入端口451提供页面屏蔽信号。经由CP0_TRANSLATION输入端口452提供CP0_TRANSLATION输入信号。取决于使用TLB 400从VA到PA的译本,经由TLB_TRANSLATION输出端口453提供TLB_TRANSLATION输出信号。
图4b更详细地说明了由可合成逻辑元件形成的TLB 400,并且在图4c中,概括示出了TLB 400的操作步骤。在TLB操作的更详细说明中,经由VPN_IN输入端口450提供用于翻译的VPN(480),其中位VPN_IN[31:12]是作为VPN从VA[31:0]到这个输入端口450提供的。经由CP0_PAGE_MASK输入端口451提供页面屏蔽。向页面屏蔽编码器408提供这个页面屏蔽,用于根据表1来对页面屏蔽进行编码。
    页面大小   屏蔽[2:0]
    4KB     000
    16KB     001
    64KB     010
    256KB     011
    1M     100
    4M     101
    16M     110
表1:页面屏蔽编码
所述页面屏蔽编码器408用于接收其输入端口上的CP0_PAGE_MASK输入信号,并且用于使这个输入信号与3位向量MASK[2:0]进行相关。进一步向散列电路406提供所述3位向量MASK[2:0]。所述散列电路406经由第一输入端口406a来接收VPN_IN[31:12],并且经由第二输入端口406b来接收MASK[2:0]。散列向量H_VPN[5:0]是通过散列电路406的散列操作481而从其输出端口406c那里提供的。进一步向48个寄存器409中的每一个寄存器提供散列向量H_VPN[5:0]和MASK[2:0],其中每个寄存器包括多个触发器,共同称为491。每个寄存器409都具有两个输出端口。向比较电路403提供来自于其第一输出端口的第一输出信号。向48个散列电路406的其中一个的第二输入端口406b提供来自于第二输出端口的第二输出信号。这个散列电路上的第一输入端口接收VPN_IN[31:12]。所述散列电路406输出端口耦合到用于对寄存器输出和散列电路输出信号之间进行比较的48个比较电路403的其中一个。取决于两个输入信号的比较,如果所述信号是相同的则每个比较器都提供‘1’,如果它们是不同的则提供‘0’。来自48个比较器的每一个的输出信号hiti提供给48个单位的二输入多路复用器411中的一个。来自于每个多路复用器的输出端口耦合到触发器404。每个触发器404都生成在标记为tryi的输出端口提供的输出信号,其中对于0<i<47的情况下,这些输出信号try[0…47]一起被提供给优先级编码器电路401。所述优先级编码器电路进一步耦合到二进制解码器电路402,其中所述优先级编码器电路向二进制解码器电路402和RAM 410确立TLB_ENTRY[5:0]信号。在TLB 400内提供三个输出端口,ENTRY_FOUND输出端口454、ENTRY_NOT_FOUND输出端口455和TLB_TRANSLATION输出端口453,以分别提供ENTRY_FOUND、ENTRY_NOT_FOUND和TLB_TRANSLATION输出信号。
将对于从VA到PA的译本的地址存储在随机存取存储器(RAM)410中,其中所述RAM 410最好按行的形式具有48项。在使用中,每当执行新的翻译时,分别通过输入端口450、451和452向TLB电路400提供输入信号VPN_IN、CP0_PAGE_MASK和CP0_TRANSLATION。对于给定的索引i由TLB所执行的译本存储在RAM 410中。所述给定的索引对保存PPN的译本的RAM内的其中一行410a进行索引。所述散列电路406计算散列函数H(VPN_IN,MASK)并且在相应的6位寄存器hi中存储结果(490)。在3位寄存器mi中存储页面屏蔽(491)。
当利用TLB请求翻译时,经由输入端口提供VPN并且为所有的i计算散列函数H(VPN_IN,mi)并与hi相比(450)。这产生48位的向量hit0…hit47(492),所述48个位向量随后被加载到48位的寄存器try0…try47中(493)。为了确定所请求的VPN_IN是否存在于RAM中所存储的翻译表当中(482),只检查RAM中那些tryi已经确立的项或行。如果它产生‘1′(483),则确立48位的tryi向量中的一项。当然,可能在tryi向量中有不止一位被确立,但是优先级编码器401选择具有最低索引值的项以便对RAM内的项寻址。所述解码器402将这个索引转换成48位的一次命中的向量clr0…clr47(494)。当时钟脉冲从时钟电路(未示出)来临时,除与刚才用来寻到RAM的索引相对应的已清除的位之外,所述tryi向量被重新加载。每次一项地重复这个过程(483)。一旦如ENTRY_FOUND输出端口454上的ENTRY_FOUND信号所指示的那样查找到了所请求的项时,或当tryi中的所有位都为0时,所述过程就立即停止(484)。当tryi中的所有位都是‘0’时,那么就经由ENTRY_NOT_FOUND输出端口455来提供ENTRY_NOT_FOUND信号。在第一种情况下,翻译是成功的并且利用TLB_TRANSLATION输出端口453上的TLB_TRANSLATION信号从RAM 410那里提供用于翻译的信息(485)。在第二种情况下,翻译不成功,并且TLB报告TLB再填充异常。
图5更详细地说明了散列电路506。利用MASK[2:0]和VPN[31:12]向散列电路506输入信号,7对1多路复用器501依据提供给第二输入端口506b的MASK[2:0]信号从散列电路506那里提供H_VPN[5:0]输出信号。这个散列电路从VPN中选择6个最低位。所述选择受页面屏蔽的控制,因为″最低的″的定义随页面大小而变化。例如,对于4kB的页面大小来说,VPN的6个最低位(LSB)是位22:17,而对于16kB的页面大小来说,6个LSB是位19:14。由于TLB 400的每个TLB项都存储两个相邻的虚拟页,称作奇/偶对,因而对于4kB页面的6个LSB来说,奇/偶对是位18:13。因此,第12位确定是返回偶数(0)还是返回奇数(1)译本,而对于16kB的奇/偶对来说,所述位是20:15。然而,这个散列函数是冗余的,因为位H_VPN[5:0]的排序是不相干的。图6展示出了位的排序是不相干的。
图6说明了图5中所示的散列电路的变形。向第一输入端口606a提供VPN[31:12]信号,而向第二输入端口606b提供MASK[2:0]信号。所述屏蔽信号MASK[2:0]由位m0、m1和m2组成。在这个散列电路606内部有三个3对1多路复用器601至603。第一多路复用器601在其选择输入端口上接收下列位{m2, m2(m1+m2)},其中向多路复用器数据输入端口0至2分别提供来自VPN的位VPN[13:14]、VPN[19:20]、VPN[25:26]。由此,多路复用器601给H_VPN[5:0]输出信号提供第5位和第4位。第二多路复用器602在其选择输入端口上接收下列位{m2(m1+m0), m2m1+m2 m2 m0)},其中向标记为0至2的多路复用器数据输入端口分别提供来自于VPN的位VPN[15:16]、VPN[21:22]、VPN[27:28]。由此,多路复用器602给H_VPN[5:0]输出信号提供第3位和弟2位。所述第三多路复用器603在其选择输入端口上接收下列位:{m2m1, m2m1m0+m2 m1)},其中向标记为0至2的多路复用器数据输入端口分别提供来自于VPN的位VPN[17:18]、VPN[23:24]、VPN[29:30]。由此,多路复用器603给H_VPN[5:0]输出信号提供第1位和第0位。
优选地,散列函数H_VPN[5:0]对于MASK[2:0]和对于VPN_IN[31:12]输入信号而言是均匀分布的。在TLB错失的情况下,查找RAM内起初为之确立tryi的所有项。循环数Nmiss可以用下式表示:
N miss = Σ j = 0 48 48 j p j ( 1 - p ) 48 - j ( 1 + j )
,其中p是比较器输出信号hiti被确立的概率。下列项:
48 j p j ( 1 - p ) 48 - j
,给出在try向量tryi中正好有j个位最初被确立的概率。当均匀散列函数H在它的输出信号上具有n个位的情况下,p=2-n,其中在图4b的情况下,n=6。
在TLB命中的情况下,需要对RAM 410进行至少一次访问,这与不访问RAM的情况下进行检测的TLB错失的状况相反,因为在TLB错失状况中,try向量tryi包含的全部是0。
为命中翻译在TLB中需要执行的平均循环数是由下列公式给出的:
N hit = Σ k = 0 47 47 k p k ( 1 - p ) 47 - k ( 1 + k 2 )
对于TLB命中而言,在try向量tryi中一定存在至少一个‘1’。唯一的不定性就是向量内带有其余元素造成的。变量k用来表示对于k处于0…47的范围内、try向量tryi内被设置为‘1’的其余项的数量。如果k=0,那么在RAM内仅仅查出一项。因此,由于对于i=0时要使用一个时钟周期来查找第一位置中的译本,因此就要利用总共两个时钟周期来执行所述翻译。平均起来,需要花费2+k/2循环以从RAM410中返回所请求的译本。
就执行翻译和中断等待而言,要检查长的查找序列所需的时钟周期数,例如k高达25或25以上。下列关系式:
P { N 25 } = Σ 25 48 48 j p j ( 1 - p ) 48 - j
,给出了TLB将使用25个或25个以上的循环来完成翻译的概率。表2列出了在散列函数宽度(n)的范围内为了找到翻译Nhit,检测错失Nmiss需要花费的平均循环数和TLB操作占用25个周期数或更多周期数的概率。
N  Nhit  Hhitq Nmiss  P{N25}
3  4.94  3.94  7.00  4.3 10-11
4  3.46  2.46  4.00  5.9 10-18
5  2.73  1.73  2.50  3.6 10-25
6  2.37  1.37  1.75  1.5 10-32
7  2.18  1.18  1.38  5.4 10-40
表2:作为散列位‘n’的数量的函数的TLB等待时间
从表2来看,很明显P{N25}是如此之小,以致即使具有4位散列函数,它也需要超过6000年的连续操作才能碰上TLB翻译需要25到48个之间的时钟周期的情况。
Nhitq(″命中快速″)列适用于连续地向TLB电路400施加VPN_IN的情况。从这个表来看,很明显当重点在于最重要的数即Nhit时,n=5或n=6就足够了。超过6位不会得到更大收获,因为当n=>20时Nhit趋近2.0。在TLB电路400中使用n=6的数值,因为散列函数可能不是很均匀。因此,TLB内使用的6位散列函数接近于5位真正均匀的散列函数的性能。
有利的是,当向TLB提供VA时,它被传送到对每一行的合成逻辑中,并且提供这样的结果,它由tryi向量内各个位中至少一个确立的位来表明。然后,为了提供PPN只要在物理上访问那些其结果表现出匹配已发生的那些行。因此,对于翻译过程只要访问TLB行的一小部分,由此导致实质的性能改善。
在不背离本发明的精神或范围的情况下,可以设想出许多其它的实施例。

Claims (34)

1.一种翻译后援缓冲器(TLB),包括:至少一个输入端口(450),用于接收虚拟地址的一部分;随机存取存储器(410);一组寄存器(491);和可合成逻辑(499),用于根据所接收到的部分虚拟地址确定散列值以及用于将该散列值与寄存器组(491)内的已存储的一个散列值进行比较以确定这样的可能性,即在随机存取存储器(410)内的某一行(410a)内存储着与虚拟地址相关联的物理地址并且与来自寄存器组(491)中的一个寄存器(409)相关联,在所述寄存器内部存储有所述散列值。
2.根据权利要求1所述的翻译后援缓冲器,其中所述可合成逻辑(499)包括编码器电路(408),用于接收至少一个可表示页面大小的页面大小信号,并且用于根据该至少一个页面大小信号来确定供确定散列值之用的至少一个屏蔽位。
3.根据权利要求2所述的翻译后援缓冲器,其中所述可合成逻辑包括:第一散列电路(406),它包括输出端口(406c)并且用于接收所接收到的部分虚拟地址和至少一个屏蔽位,该第一散列电路(406)用于根据所接收到的部分虚拟地址和该至少一个屏蔽位来确定性地生成第一散列值,并且用于向它的输出端口(406c)提供该第一散列值。
4.根据权利要求3所述的翻译后援缓冲器,其中所述可合成逻辑包括:至少一个寄存器(409),用于存储至少一个屏蔽位。
5.根据权利要求4所述的翻译后援缓冲器,其中所述可合成逻辑包括:第二散列电路(406),用于从至少一个寄存器(409)中接收该部分虚拟地址和至少一个已存储的屏蔽位,所述第二散列电路(406)用于确定该散列值。
6.根据权利要求5所述的翻译后援缓冲器,包括比较器(403),并且其中所述随机存取存储器(410)包括:一个存储在其中的翻译表,其中在所述翻译表内存储所述行(410a)并且其中在比较器(403)内比较所述散列值以确定虚拟地址是否存在于翻译表内的相关的行中;一个肯定的指示,表明对于相关行内的虚拟地址可能有匹配;和一个否定的指示,表明相关行内的虚拟地址没有可能匹配。
7.根据权利要求5所述的翻译后援缓冲器,包括第三散列电路(406),所述第三散列电路用于从至少一个寄存器(409)中接收该部分虚拟地址和至少一个已存储的屏蔽位,所述第三散列电路(406)用于与第二散列电路(406)平行地确定一个散列向量,该散列向量中已存储着对于随机存取存储器(410)中至少两行的确定性地生成的散列值。
8.根据权利要求7所述的翻译后援缓冲器,其中所述第一散列电路(406)预先将该虚拟地址和至少一个检索出的屏蔽位散列,以便提供用于供给第二和第三散列电路的预先散列值。
9.根据权利要求8所述的翻译后援缓冲器,包括至少一个第二寄存器(404),所述至少一个第二寄存器(404)用于存储散列值和在存储器内的一个相关行(410a)之间的比较结果,所述比较结果提供表明相关行内的虚拟地址可能匹配的一个肯定指示和表明没有可能匹配的一个否定指示。
10.根据权利要求9所述的翻译后援缓冲器,其中该至少一个第二寄存器(404)中的多个包括一些寄存器(493),其数量等于或多于翻译后援缓冲器的存储器(410)中的行数量。
11.根据权利要求1所述的翻译后援缓冲器,其中所述可合成逻辑包括多个比较器(403),用于将多个散列值与多个期望的散列值进行比较以确定在存储器中的每个相关的行内存储着用于虚拟地址的译本的可能性,其中每一个所述期望的散列值都与存储器(410a)中的一行相关联,所述比较器在组合时用于提供一个包含着与存储器(410)中的每一行相关联的值的向量。
12.根据权利要求11所述的翻译后援缓冲器,其中所述可合成逻辑包括一个分解电路,用于在表明含有译本的存储器中一行的可能译本的多个值之间进行分解。
13.根据权利要求1所述的翻译后援缓冲器,包括散列电路(406),用于对除其译本目前已被存储的虚拟地址之外的虚拟地址进行散列以确定一个散列值,并且用于将该散列值存储在与存储器中的可用的行(410a)相关联的寄存器(404)中,所述散列电路用于在存储器(410)中的可用的行中存储虚拟地址和对应于它的译本。
14.一种翻译后援缓冲器,包括:随机存取存储器(410);与存储器(410)中一行(410a)相关联的第一寄存器(404);和散列电路(406),用于接收与一个其译本目前被存储在该随机存取存储器(410)中的虚拟地址不同的虚拟地址,用于确定散列值和用于在第一寄存器(404)中存储该散列值;并且该散列电路用于在存储器的所述行中存储虚拟地址及其译本。
15.一种翻译后援缓冲器,包括:RAM;和可合成逻辑(499),用于根据虚拟地址来确定RAM(410)内的至少一个可能的地址,以固定的关系对所述RAM(410)进行搜索以查找与虚拟地址相关联的物理地址,该至少一个可能的地址是RAM(410)内的一个仅有的已知地址以外的地址,它以固定的关系在所述RAM(410)中存储与虚拟地址相关联的物理地址。
16.根据权利要求15所述的翻译后援缓冲器,其中所述可合成逻辑包括一个散列电路(406),用于将虚拟地址散列以确定一个表明RAM(410)中的一行(410a)的值,在所述行(410a)处开始搜索该虚拟地址的译本。
17.根据权利要求16所述的翻译后援缓冲器,其中所述可合成逻辑包括查找分解电路,用于反复地将RAM(410)中的多个行内所存储的虚拟地址数据与虚拟地址进行比较以确定用于虚拟地址的译本的存在,所述查找分解电路用于在它的输出端口(453)上提供分解后的译本。
18.根据权利要求17所述的翻译后援缓冲器,其中所述查找分解电路包括递增电路(401),用于在连续比较操作之间按行递增存储器内的行的地址。
19.根据权利要求17所述的翻译后援缓冲器,其中查找分解电路包括一个散列电路,用于在连续比较操作之间按行来改变存储器内的行的地址。
20.一种为包含RAM和可合成逻辑的翻译后援缓冲器实现虚拟地址查找功能的方法,包括以下步骤:向可合成逻辑提供虚拟地址(490)(499);将所提供的虚拟地址散列以提供散列结果(481);根据散列结果确定RAM(410)内部的存储位置,相对于该位置来存储虚拟地址标识符和与之相关的物理地址(482);将虚拟地址与虚拟地址标识符进行比较以确定物理地址是否对应于所提供的虚拟地址(483);并且当物理地址与所提供的虚拟地址相对应时(484),提供物理地址以作为输出值(485)。
21.根据权利要求20所述的方法,其中确定存储位置的步骤包括以下步骤:相对于与RAM(410)中的一个行(410a)相关联的已知的散列结果来比较该散列结果以确定一个比较结果;形成一个包含着多个值的命中向量(492),与RAM(410)中的该行(410a)相关联的每一个值与该已知的散列结果相关联,并且同与该值相关联的RAM中的该行包含一个该虚拟地址的译本的或然率有关。
22.根据权利要求21所述的方法,其中该确定的步骤是对RAM(410)内的每一行执行的。
23.根据权利要求22所述的方法,其中该比较的步骤是顺序地对RAM(410)中不同的行而实施的,这些行与一个表明该虚拟地址的可能译本的值相关联,直到确定了包含译本的行的位置为止。
24.根据权利要求20所述的方法,其中确定的步骤是对RAM(410)内的每一行执行的。
25.根据权利要求24所述的方法,其中存储器中的一个行包括从单个虚拟地址到单个对应的物理地址的单个地址译本。
26.根据权利要求20所述的方法,其中该散列的步骤包括如下步骤:把虚拟地址和与存储器中的每一行相关联的已存的值散列以便独立地确定与存储器中的每一行相关联的散列值。
27.根据权利要求26所述的方法,其中存储器中的一个行包含从单个虚拟地址到单个对应的物理地址的单个地址译本。
28.根据权利要求20所述的方法,其中该散列的步骤包括以下步骤:将虚拟地址预先散列;将预先散列的虚拟地址独立地与多个已存储的值中的每一个相组合以便独立地确定与RAM(410)中的每一行相关联的散列值,所述每一个已存储的值都与存储器(410)中的一个行相关联。
29.根据权利要求28所述的方法,其中该比较的步骤是顺序地对RAM(410)中不同的行而实施的,这些行与一个表明该虚拟地址可能的译本的值相关联,直到确定了包含所述译本的行(410a)的位置为止。
30.根据权利要求28所述的方法,其中存储器中的一个行包括从单个虚拟地址到单个对应的物理地址的单个地址译本。
31.根据权利要求20所述的方法,其中该散列的步骤包括如下步骤:把虚拟地址散列以确定表明RAM(410)中可能存储着虚拟地址的译本的一个行的值。
32.根据权利要求31所述的方法,其中该比较的步骤包括如下步骤:以已知的顺序从与该已确定的值相关的RAM中的该行开始,反复比较RAM中的多个行,直到确定了对应虚拟地址的译本位置为止。
33.根据权利要求32所述的方法,其中在连续比较之间按行来递增该已知的顺序。
34.根据权利要求32所述的方法,其中通过根据该已确定的值求解一个函数来确定该已知的顺序。
CNB038215691A 2002-09-13 2003-09-12 带有根据页面大小指示符而进行散列的局部标记的翻译后援缓冲器 Expired - Fee Related CN100555248C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/242,785 2002-09-13
US10/242,785 US20040054867A1 (en) 2002-09-13 2002-09-13 Translation lookaside buffer

Publications (2)

Publication Number Publication Date
CN1682200A true CN1682200A (zh) 2005-10-12
CN100555248C CN100555248C (zh) 2009-10-28

Family

ID=31991480

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB038215691A Expired - Fee Related CN100555248C (zh) 2002-09-13 2003-09-12 带有根据页面大小指示符而进行散列的局部标记的翻译后援缓冲器

Country Status (7)

Country Link
US (2) US20040054867A1 (zh)
EP (1) EP1552397A1 (zh)
JP (1) JP2005538465A (zh)
KR (1) KR101145557B1 (zh)
CN (1) CN100555248C (zh)
AU (1) AU2003260822A1 (zh)
WO (1) WO2004025480A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100520710C (zh) * 2006-07-27 2009-07-29 中国科学院计算技术研究所 复杂指令系统中tlbr内部例外的处理方法和处理器
CN102486751A (zh) * 2010-12-01 2012-06-06 安凯(广州)微电子技术有限公司 一种在微内存系统上实现小页nandflash虚拟大页的方法
CN102662860A (zh) * 2012-03-15 2012-09-12 天津国芯科技有限公司 用于进程切换的旁路转换缓冲器(tlb)及在其中地址匹配的方法

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7236490B2 (en) * 2000-11-17 2007-06-26 Foundry Networks, Inc. Backplane interface adapter
US7596139B2 (en) 2000-11-17 2009-09-29 Foundry Networks, Inc. Backplane interface adapter with error control and redundant fabric
US7468975B1 (en) * 2002-05-06 2008-12-23 Foundry Networks, Inc. Flexible method for processing data packets in a network routing system for enhanced efficiency and monitoring capability
US7266117B1 (en) 2002-05-06 2007-09-04 Foundry Networks, Inc. System architecture for very fast ethernet blade
US20120155466A1 (en) 2002-05-06 2012-06-21 Ian Edward Davis Method and apparatus for efficiently processing data packets in a computer network
US7649885B1 (en) 2002-05-06 2010-01-19 Foundry Networks, Inc. Network routing system for enhanced efficiency and monitoring capability
US20090279558A1 (en) * 2002-05-06 2009-11-12 Ian Edward Davis Network routing apparatus for enhanced efficiency and monitoring capability
US7187687B1 (en) * 2002-05-06 2007-03-06 Foundry Networks, Inc. Pipeline method and system for switching packets
KR100459728B1 (ko) * 2002-10-22 2004-12-03 삼성전자주식회사 고속 변환 색인 버퍼
US6901072B1 (en) * 2003-05-15 2005-05-31 Foundry Networks, Inc. System and method for high speed packet transmission implementing dual transmit and receive pipelines
US7817659B2 (en) 2004-03-26 2010-10-19 Foundry Networks, Llc Method and apparatus for aggregating input data streams
US8730961B1 (en) * 2004-04-26 2014-05-20 Foundry Networks, Llc System and method for optimizing router lookup
US8775740B2 (en) * 2004-08-30 2014-07-08 Texas Instruments Incorporated System and method for high performance, power efficient store buffer forwarding
US7657703B1 (en) * 2004-10-29 2010-02-02 Foundry Networks, Inc. Double density content addressable memory (CAM) lookup scheme
US7948171B2 (en) * 2005-02-18 2011-05-24 Semiconductor Energy Laboratory Co., Ltd. Light emitting device
US8448162B2 (en) 2005-12-28 2013-05-21 Foundry Networks, Llc Hitless software upgrades
US20070288690A1 (en) * 2006-06-13 2007-12-13 Foundry Networks, Inc. High bandwidth, high capacity look-up table implementation in dynamic random access memory
US7903654B2 (en) * 2006-08-22 2011-03-08 Foundry Networks, Llc System and method for ECMP load sharing
US8238255B2 (en) 2006-11-22 2012-08-07 Foundry Networks, Llc Recovering from failures without impact on data traffic in a shared bus architecture
WO2008070814A2 (en) * 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for a scalable, composite, reconfigurable backplane
US8151082B2 (en) * 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US8161353B2 (en) 2007-12-06 2012-04-17 Fusion-Io, Inc. Apparatus, system, and method for validating that a correct data segment is read from a data storage device
US8155011B2 (en) * 2007-01-11 2012-04-10 Foundry Networks, Llc Techniques for using dual memory structures for processing failure detection protocol packets
US8271859B2 (en) 2007-07-18 2012-09-18 Foundry Networks Llc Segmented CRC design in high speed networks
US8037399B2 (en) * 2007-07-18 2011-10-11 Foundry Networks, Llc Techniques for segmented CRC design in high speed networks
US8149839B1 (en) 2007-09-26 2012-04-03 Foundry Networks, Llc Selection of trunk ports and paths using rotation
US8090901B2 (en) 2009-05-14 2012-01-03 Brocade Communications Systems, Inc. TCAM management approach that minimize movements
US8599850B2 (en) 2009-09-21 2013-12-03 Brocade Communications Systems, Inc. Provisioning single or multistage networks using ethernet service instances (ESIs)
US20110216769A1 (en) * 2010-03-08 2011-09-08 Brocade Communications Systems, Inc. Dynamic Path Selection
US20130067289A1 (en) * 2011-09-14 2013-03-14 Ariel Maislos Efficient non-volatile read cache for storage system
US9569369B2 (en) * 2011-10-27 2017-02-14 Oracle International Corporation Software translation lookaside buffer for persistent pointer management
US9343177B2 (en) * 2013-02-01 2016-05-17 Apple Inc. Accessing control registers over a data bus
CN104216833B (zh) 2013-05-29 2017-10-10 华为技术有限公司 一种确定物理地址的方法及装置
US10007435B2 (en) 2015-05-21 2018-06-26 Micron Technology, Inc. Translation lookaside buffer in memory
US9959044B2 (en) * 2016-05-03 2018-05-01 Macronix International Co., Ltd. Memory device including risky mapping table and controlling method thereof
US10545877B2 (en) * 2018-04-05 2020-01-28 Arm Limited Apparatus and method for accessing an address translation cache
US11055232B2 (en) * 2019-03-29 2021-07-06 Intel Corporation Valid bits of a translation lookaside buffer (TLB) for checking multiple page sizes in one probe cycle and reconfigurable sub-TLBS

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4170039A (en) * 1978-07-17 1979-10-02 International Business Machines Corporation Virtual address translation speed up technique
US4215402A (en) * 1978-10-23 1980-07-29 International Business Machines Corporation Hash index table hash generator apparatus
US4638426A (en) * 1982-12-30 1987-01-20 International Business Machines Corporation Virtual memory address translation mechanism with controlled data persistence
US4680700A (en) * 1983-12-07 1987-07-14 International Business Machines Corporation Virtual memory address translation mechanism with combined hash address table and inverted page table
JPH0760411B2 (ja) * 1989-05-23 1995-06-28 株式会社日立製作所 バッファ記憶制御装置
GB9205551D0 (en) * 1992-03-13 1992-04-29 Inmos Ltd Cache memory
US5574877A (en) * 1992-09-25 1996-11-12 Silicon Graphics, Inc. TLB with two physical pages per virtual tag
US5526504A (en) * 1993-12-15 1996-06-11 Silicon Graphics, Inc. Variable page size translation lookaside buffer
EP0675443A1 (en) * 1994-03-30 1995-10-04 Digital Equipment Corporation Apparatus and method for accessing direct mapped cache
US5752275A (en) * 1995-03-31 1998-05-12 Intel Corporation Translation look-aside buffer including a single page size translation unit
US6026476A (en) * 1996-03-19 2000-02-15 Intel Corporation Fast fully associative translation lookaside buffer
US5860147A (en) * 1996-09-16 1999-01-12 Intel Corporation Method and apparatus for replacement of entries in a translation look-aside buffer
US6014732A (en) * 1997-10-22 2000-01-11 Hewlett-Packard Company Cache memory with reduced access time
US6516386B1 (en) * 1997-12-31 2003-02-04 Intel Corporation Method and apparatus for indexing a cache
US6212603B1 (en) * 1998-04-09 2001-04-03 Institute For The Development Of Emerging Architectures, L.L.C. Processor with apparatus for tracking prefetch and demand fetch instructions serviced by cache memory
US6205531B1 (en) * 1998-07-02 2001-03-20 Silicon Graphics Incorporated Method and apparatus for virtual address translation
US6381673B1 (en) * 1998-07-06 2002-04-30 Netlogic Microsystems, Inc. Method and apparatus for performing a read next highest priority match instruction in a content addressable memory device
US6360220B1 (en) * 1998-08-04 2002-03-19 Microsoft Corporation Lock-free methods and systems for accessing and storing information in an indexed computer data structure having modifiable entries
US6233652B1 (en) * 1998-10-30 2001-05-15 Intel Corporation Translation lookaside buffer for multiple page sizes
US6625714B1 (en) * 1999-12-17 2003-09-23 Hewlett-Packard Development Company, L.P. Parallel distributed function translation lookaside buffer
US6625715B1 (en) * 1999-12-30 2003-09-23 Intel Corporation System and method for translation buffer accommodating multiple page sizes
US6687789B1 (en) * 2000-01-03 2004-02-03 Advanced Micro Devices, Inc. Cache which provides partial tags from non-predicted ways to direct search if way prediction misses
US6356990B1 (en) * 2000-02-02 2002-03-12 International Business Machines Corporation Set-associative cache memory having a built-in set prediction array
US6581140B1 (en) * 2000-07-03 2003-06-17 Motorola, Inc. Method and apparatus for improving access time in set-associative cache systems
US6629099B2 (en) * 2000-12-07 2003-09-30 Integrated Silicon Solution, Inc. Paralleled content addressable memory search engine
US6889225B2 (en) * 2001-08-09 2005-05-03 Integrated Silicon Solution, Inc. Large database search using content addressable memory and hash
US6700808B2 (en) * 2002-02-08 2004-03-02 Mobility Electronics, Inc. Dual input AC and DC power supply having a programmable DC output utilizing a secondary buck converter
US6925464B2 (en) * 2002-06-13 2005-08-02 Intel Corporation Method and system for performing inserts and lookups in memory
US7136960B2 (en) * 2002-06-14 2006-11-14 Integrated Device Technology, Inc. Hardware hashing of an input of a content addressable memory (CAM) to emulate a wider CAM

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100520710C (zh) * 2006-07-27 2009-07-29 中国科学院计算技术研究所 复杂指令系统中tlbr内部例外的处理方法和处理器
CN102486751A (zh) * 2010-12-01 2012-06-06 安凯(广州)微电子技术有限公司 一种在微内存系统上实现小页nandflash虚拟大页的方法
CN102662860A (zh) * 2012-03-15 2012-09-12 天津国芯科技有限公司 用于进程切换的旁路转换缓冲器(tlb)及在其中地址匹配的方法
CN102662860B (zh) * 2012-03-15 2015-07-01 天津国芯科技有限公司 用于进程切换的旁路转换缓冲器(tlb)及在其中地址匹配的方法

Also Published As

Publication number Publication date
US20040054867A1 (en) 2004-03-18
AU2003260822A1 (en) 2004-04-30
US8607026B2 (en) 2013-12-10
JP2005538465A (ja) 2005-12-15
EP1552397A1 (en) 2005-07-13
KR101145557B1 (ko) 2012-05-16
KR20050043944A (ko) 2005-05-11
WO2004025480A1 (en) 2004-03-25
CN100555248C (zh) 2009-10-28
US20120066475A1 (en) 2012-03-15

Similar Documents

Publication Publication Date Title
CN1682200A (zh) 带有根据页面大小指示符而进行散列的局部标记的翻译后援缓冲器
EP0642086B1 (en) Virtual address to physical address translation cache that supports multiple page sizes
US4587610A (en) Address translation systems for high speed computer memories
AU2008249232B2 (en) Database
US8171200B1 (en) Serially indexing a cache memory
US6560690B2 (en) System and method for employing a global bit for page sharing in a linear-addressed cache
JPH03194632A (ja) 変換予見にもとづくキャッシュアクセス
US20020138648A1 (en) Hash compensation architecture and method for network address lookup
US8751751B2 (en) Method and apparatus for minimizing cache conflict misses
AU2002222096A1 (en) Method of organising, interrogating and navigating a database
US20130297877A1 (en) Managing buffer memory
CN114860627B (zh) 基于地址信息动态生成页表的方法
Botelho et al. Minimal perfect hashing: A competitive method for indexing internal memory
US8468297B2 (en) Content addressable memory system
CN1381797A (zh) 高速信息检索系统
US6990551B2 (en) System and method for employing a process identifier to minimize aliasing in a linear-addressed cache
US20130013888A1 (en) Method and Appartus For Index-Based Virtual Addressing
US6915373B2 (en) Cache with multiway steering and modified cyclic reuse
JP2008511882A (ja) 一意のタスク識別子を用いてデータを共用する仮想アドレス・キャッシュ及び方法
US20030028530A1 (en) Method and apparatus for accelerating search functions
EP0206050A2 (en) Virtually addressed cache memory with physical tags
CN1379334A (zh) 地址转换
Chung Parallel main memory database system
Tripathi et al. Templing and Temple Search-Same Height Hashing
Chung Parallel relational operations using clustered surrogate files on shared-nothing multiprocessors

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: NXP CO., LTD.

Free format text: FORMER OWNER: KONINKLIJKE PHILIPS ELECTRONICS N.V.

Effective date: 20070803

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

Effective date of registration: 20070803

Address after: Holland Ian Deho Finn

Applicant after: Koninkl Philips Electronics NV

Address before: Holland Ian Deho Finn

Applicant before: Koninklijke Philips Electronics N.V.

C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: NITAI SOFTWARE CO., LTD.

Free format text: FORMER OWNER: KONINKL PHILIPS ELECTRONICS NV

Effective date: 20120321

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

Effective date of registration: 20120321

Address after: Delaware

Patentee after: Nytell Software LLC

Address before: Holland Ian Deho Finn

Patentee before: Koninkl Philips Electronics NV

C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20091028

Termination date: 20130912