<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://www.linux-mips.org/mediawiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://www.linux-mips.org/wiki?title=TLB&amp;feed=atom&amp;action=history</id>
		<title>TLB - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://www.linux-mips.org/wiki?title=TLB&amp;feed=atom&amp;action=history"/>
		<link rel="alternate" type="text/html" href="http://www.linux-mips.org/wiki?title=TLB&amp;action=history"/>
		<updated>2013-05-23T11:42:02Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.20.2</generator>

	<entry>
		<id>//www.linux-mips.org/wiki?title=TLB&amp;diff=11826&amp;oldid=prev</id>
		<title>Ralf at 15:26, 26 September 2012</title>
		<link rel="alternate" type="text/html" href="http://www.linux-mips.org/wiki?title=TLB&amp;diff=11826&amp;oldid=prev"/>
				<updated>2012-09-26T15:26:51Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 15:26, 26 September 2012&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 16:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 16:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Linux support ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Linux support ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Linux supports R2000 and R4000-style TLBs which are used by the ''huge'' majority of all the systems that can possibly run Linux.&amp;#160; At the moment Linux only suports TLBs that support 4kB page size; there are plans to optionally increase the page size to 16kB or 64kB.&amp;#160; Alternate MMU organizations such at [[Block Address Translation]] registers are not supported.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Linux supports R2000 and R4000-style TLBs which are used by the ''huge'' majority of all the systems that can possibly run Linux.&amp;#160; At the moment Linux only suports TLBs that support 4kB page size; there are plans to optionally increase the page size to 16kB or 64kB.&amp;#160; Alternate MMU organizations such at [[Block Address Translation]] registers are not supported.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;== See also ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Transparent Huge Pages]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== External Links ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== External Links ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* [[wikipedia:Translation Lookaside Buffer|Wikipedia TLB article]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* [[wikipedia:Translation Lookaside Buffer|Wikipedia TLB article]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ralf</name></author>	</entry>

	<entry>
		<id>//www.linux-mips.org/wiki?title=TLB&amp;diff=8348&amp;oldid=prev</id>
		<title>Ralf: Make &quot;page size&quot; a link.</title>
		<link rel="alternate" type="text/html" href="http://www.linux-mips.org/wiki?title=TLB&amp;diff=8348&amp;oldid=prev"/>
				<updated>2006-08-29T13:55:21Z</updated>
		
		<summary type="html">&lt;p&gt;Make &amp;quot;page size&amp;quot; a link.&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 13:55, 29 August 2006&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== R4000-style TLB ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== R4000-style TLB ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This TLB has been implemented with a varying number of entries ranging from 32 to 64; 48 is probably the most common value.&amp;#160; Each TLB entry can have a separate page size.&amp;#160; Typically the page size ranges from 4kB to 16MB, in *&amp;amp;nbsp;4 steps.&amp;#160; A few CPUs support 64MB or even 256MB page size.&amp;#160; On the low end a few TLBs also support 1kB pages.&amp;#160; Each TLB entry maps an adjacent pair of pages.&amp;#160; As the result the virtual address of a TLB entry needs to be aligned to twice the page size.&amp;#160; This is an unusual restriction and may create slight problems in operating systems that were written in unawareness of this.&amp;#160; The wired register permits changing the number of wired entries.&amp;#160; Again TLB flushing is optimized by an 8-bit tag.&amp;#160; Unlike on the R2000-style TLB it's called ''ASID'' however. Just like on the R2000 TLB manipulation is done through 4 special instructions, ''tlbp'', ''tlbr'', ''tlbwi'', ''tlbwr''.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This TLB has been implemented with a varying number of entries ranging from 32 to 64; 48 is probably the most common value.&amp;#160; Each TLB entry can have a separate &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[&lt;/ins&gt;page size&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]]&lt;/ins&gt;.&amp;#160; Typically the page size ranges from 4kB to 16MB, in *&amp;amp;nbsp;4 steps.&amp;#160; A few CPUs support 64MB or even 256MB page size.&amp;#160; On the low end a few TLBs also support 1kB pages.&amp;#160; Each TLB entry maps an adjacent pair of pages.&amp;#160; As the result the virtual address of a TLB entry needs to be aligned to twice the page size.&amp;#160; This is an unusual restriction and may create slight problems in operating systems that were written in unawareness of this.&amp;#160; The wired register permits changing the number of wired entries.&amp;#160; Again TLB flushing is optimized by an 8-bit tag.&amp;#160; Unlike on the R2000-style TLB it's called ''ASID'' however. Just like on the R2000 TLB manipulation is done through 4 special instructions, ''tlbp'', ''tlbr'', ''tlbwi'', ''tlbwr''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== R8000-style TLB ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== R8000-style TLB ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ralf</name></author>	</entry>

	<entry>
		<id>//www.linux-mips.org/wiki?title=TLB&amp;diff=6255&amp;oldid=prev</id>
		<title>McNeight: /* External Links */ revise link to wikipedia</title>
		<link rel="alternate" type="text/html" href="http://www.linux-mips.org/wiki?title=TLB&amp;diff=6255&amp;oldid=prev"/>
				<updated>2006-01-29T07:12:47Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;External Links: &lt;/span&gt; revise link to wikipedia&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 07:12, 29 January 2006&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 18:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 18:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== External Links ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== External Links ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;http&lt;/del&gt;:&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;//en.wikipedia.org/wiki/TLB &lt;/del&gt;Wikipedia TLB article&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[wikipedia&lt;/ins&gt;:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Translation Lookaside Buffer|&lt;/ins&gt;Wikipedia TLB article&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>McNeight</name></author>	</entry>

	<entry>
		<id>//www.linux-mips.org/wiki?title=TLB&amp;diff=5267&amp;oldid=prev</id>
		<title>Ralf at 20:49, 4 May 2005</title>
		<link rel="alternate" type="text/html" href="http://www.linux-mips.org/wiki?title=TLB&amp;diff=5267&amp;oldid=prev"/>
				<updated>2005-05-04T20:49:05Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 20:49, 4 May 2005&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== R8000-style TLB ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== R8000-style TLB ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The [[R8000]] being one of the oddball processors of the MIPS family of course had to have it's own TLB architecture also.&amp;#160; TLB is organized as 3-way set associative.&amp;#160; Each set contains 128 entries each mapping a single page.&amp;#160; The page size can be set separately for ''kernel mode'' and ''user mode'' on the R8000 that is all pages in a particular mode will share the page size.&amp;#160; Page sizes offered are 4kB, 8kB, 16kB, 64kB, 1MB, 4MB and 16MB.&amp;#160; This means the R8000 TLB architecture is the only to offer 8kB.&amp;#160; It's also the only which doesn't offer 256kB page size though it offers larger page sizes.&amp;#160; The R8000 is the only MIPS CPU which uses this style of TLB.&amp;#160; Similar to the [[R4000]] TLB manipulation is performed through 3 special instructions, ''tlbp'', ''tlbw'', ''tlbr''.&amp;#160; That is there is no ''tlbwr'' instruction and the ''tlbwi'' instruction being the only TLB write instruction is named ''tlbw''.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The [[R8000]] being one of the oddball processors of the MIPS family of course had to have it's own TLB architecture also.&amp;#160; TLB is organized as 3-way set associative.&amp;#160; Each set contains 128 entries each mapping a single page.&amp;#160; The page size can be set separately for ''kernel mode'' and ''user mode'' on the R8000 that is all pages in a particular mode will share the page size.&amp;#160; Page sizes offered are 4kB, 8kB, 16kB, 64kB, 1MB, 4MB and 16MB.&amp;#160; This means the R8000 TLB architecture is the only to offer 8kB.&amp;#160; It's also the only which doesn't offer 256kB page size though it offers larger page sizes.&amp;#160; The R8000 is the only MIPS CPU which uses this style of TLB.&amp;#160; Similar to the [[R4000]] TLB manipulation is performed through 3 special instructions, ''tlbp'', ''tlbw'', ''tlbr''.&amp;#160; That is there is no ''tlbwr'' instruction and the ''tlbwi'' instruction being the only TLB write instruction is named ''tlbw''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;== Linux support ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Linux supports R2000 and R4000-style TLBs which are used by the ''huge'' majority of all the systems that can possibly run Linux.&amp;#160; At the moment Linux only suports TLBs that support 4kB page size; there are plans to optionally increase the page size to 16kB or 64kB.&amp;#160; Alternate MMU organizations such at [[Block Address Translation]] registers are not supported.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== External Links ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== External Links ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* http://en.wikipedia.org/wiki/TLB Wikipedia TLB article&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* http://en.wikipedia.org/wiki/TLB Wikipedia TLB article&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ralf</name></author>	</entry>

	<entry>
		<id>//www.linux-mips.org/wiki?title=TLB&amp;diff=1655&amp;oldid=prev</id>
		<title>Ralf: Make cache reference a wiki link</title>
		<link rel="alternate" type="text/html" href="http://www.linux-mips.org/wiki?title=TLB&amp;diff=1655&amp;oldid=prev"/>
				<updated>2004-11-08T13:38:11Z</updated>
		
		<summary type="html">&lt;p&gt;Make cache reference a wiki link&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 13:38, 8 November 2004&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 6:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 6:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== R6000-style TLB ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== R6000-style TLB ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The [[R6000]] TLB is extremly unusual in that it in stores it's TLB entries in the last few lines of it's large, external cache.&amp;#160; While this may seem totally [http://en.wikipedia.org/wiki/Braindead_%281992_movie%29 braindead] at first it doesn't actually harm because regular loads and stores are interleaved with TLB activity.&amp;#160; Unlike other MIPS TLB designs on the R6000 MMU entries are manipulated though the cache instruction while the CPU is in a special mode that enables it to manipulate those cachelines that store the TLB entries.&amp;#160; The part of the TLB that resides inside the CPU itself is called ''TLB Slice''.&amp;#160; Due to the close relation of cache and TLB the cache organization also enters the picture; it's physically indexed and virtually tagged. Only the R6000 and it's slightly improved variant R6000A are using this kind of TLB organization.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The [[R6000]] TLB is extremly unusual in that it in stores it's TLB entries in the last few lines of it's large, external cache.&amp;#160; While this may seem totally [http://en.wikipedia.org/wiki/Braindead_%281992_movie%29 braindead] at first it doesn't actually harm because regular loads and stores are interleaved with TLB activity.&amp;#160; Unlike other MIPS TLB designs on the R6000 MMU entries are manipulated though the cache instruction while the CPU is in a special mode that enables it to manipulate those cachelines that store the TLB entries.&amp;#160; The part of the TLB that resides inside the CPU itself is called ''TLB Slice''.&amp;#160; Due to the close relation of &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[Caches|&lt;/ins&gt;cache&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]] &lt;/ins&gt;and TLB the cache organization also enters the picture; it's physically indexed and virtually tagged. Only the R6000 and it's slightly improved variant R6000A are using this kind of TLB organization.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== R4000-style TLB ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== R4000-style TLB ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ralf</name></author>	</entry>

	<entry>
		<id>//www.linux-mips.org/wiki?title=TLB&amp;diff=899&amp;oldid=prev</id>
		<title>Ralf: Fix some of the worst mistakes of the R6000 TLB description.</title>
		<link rel="alternate" type="text/html" href="http://www.linux-mips.org/wiki?title=TLB&amp;diff=899&amp;oldid=prev"/>
				<updated>2004-11-07T18:40:31Z</updated>
		
		<summary type="html">&lt;p&gt;Fix some of the worst mistakes of the R6000 TLB description.&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 18:40, 7 November 2004&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== R2000-style TLB ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== R2000-style TLB ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This TLB always consists of 64 TLB entries.&amp;#160; Each TLB entry maps a single page.&amp;#160; The first 8 TLB entries are &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;weired&lt;/del&gt;, that is they won't automatically be replaced by a ''tlbwr'' instruction.&amp;#160; Each TLB entry only maps a single single page and the page size is 4kB.&amp;#160; The TLB flushing is optimized by a 6-bit tag called ''PID''.&amp;#160; TLB manipulation is done through 4 special instructions, ''tlbp'', ''tlbr'', ''tlbwi'', ''tlbwr''.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This TLB always consists of 64 TLB entries.&amp;#160; Each TLB entry maps a single page.&amp;#160; The first 8 TLB entries are &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wired&lt;/ins&gt;, that is they won't automatically be replaced by a ''tlbwr'' instruction.&amp;#160; Each TLB entry only maps a single single page and the page size is 4kB.&amp;#160; The TLB flushing is optimized by a 6-bit tag called ''PID''.&amp;#160; TLB manipulation is done through 4 special instructions, ''tlbp'', ''tlbr'', ''tlbwi'', ''tlbwr''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== R6000-style TLB ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== R6000-style TLB ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The [[R6000]] TLB is extremly unusual in that it in stores it's TLB entries in the last few lines of &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the second level &lt;/del&gt;cache.&amp;#160; While this may seem totally [http://en.wikipedia.org/wiki/Braindead_%281992_movie%29 braindead] at first it doesn't actually harm because regular loads and stores are interleaved with TLB activity &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;in the second level cache&lt;/del&gt;.&amp;#160; Unlike other MIPS TLB designs on the R6000 MMU entries are manipulated though the cache instruction while the CPU is in a special mode that enables it to manipulate those cachelines that store the TLB entries.&amp;#160; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;This &lt;/del&gt;part of the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;cache &lt;/del&gt;is &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;also &lt;/del&gt;called ''TLB Slice''.&amp;#160; Only the R6000 and it's slightly improved variant R6000A are using this kind of TLB organization.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The [[R6000]] TLB is extremly unusual in that it in stores it's TLB entries in the last few lines of &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;it's large, external &lt;/ins&gt;cache.&amp;#160; While this may seem totally [http://en.wikipedia.org/wiki/Braindead_%281992_movie%29 braindead] at first it doesn't actually harm because regular loads and stores are interleaved with TLB activity.&amp;#160; Unlike other MIPS TLB designs on the R6000 MMU entries are manipulated though the cache instruction while the CPU is in a special mode that enables it to manipulate those cachelines that store the TLB entries.&amp;#160; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;The &lt;/ins&gt;part of the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;TLB that resides inside the CPU itself &lt;/ins&gt;is called ''TLB Slice''.&amp;#160; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Due to the close relation of cache and TLB the cache organization also enters the picture; it's physically indexed and virtually tagged. &lt;/ins&gt;Only the R6000 and it's slightly improved variant R6000A are using this kind of TLB organization.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== R4000-style TLB ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== R4000-style TLB ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This TLB has been implemented with a varying number of entries ranging from 32 to 64; 48 is probably the most common value.&amp;#160; Each TLB entry can have a separate page size.&amp;#160; Typically the page size ranges from 4kB to 16MB, in *&amp;amp;nbsp;4 steps.&amp;#160; A few CPUs &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;supprt &lt;/del&gt;64MB or even 256MB page size.&amp;#160; On the low end a few TLBs also support 1kB pages.&amp;#160; Each TLB entry maps an adjacent pair of pages.&amp;#160; As the result the virtual address of a TLB entry needs to be aligned to twice the page size.&amp;#160; This is an unusual restriction and may create slight problems in operating systems that were written in unawareness of this.&amp;#160; The &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;weird &lt;/del&gt;register permits changing the number of &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;weird &lt;/del&gt;entries.&amp;#160; Again TLB flushing is optimized by an 8-bit tag.&amp;#160; Unlike on the R2000-style TLB it's called ''ASID'' however. Just like on the R2000 TLB manipulation is done through 4 special instructions, ''tlbp'', ''tlbr'', ''tlbwi'', ''tlbwr''.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This TLB has been implemented with a varying number of entries ranging from 32 to 64; 48 is probably the most common value.&amp;#160; Each TLB entry can have a separate page size.&amp;#160; Typically the page size ranges from 4kB to 16MB, in *&amp;amp;nbsp;4 steps.&amp;#160; A few CPUs &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;support &lt;/ins&gt;64MB or even 256MB page size.&amp;#160; On the low end a few TLBs also support 1kB pages.&amp;#160; Each TLB entry maps an adjacent pair of pages.&amp;#160; As the result the virtual address of a TLB entry needs to be aligned to twice the page size.&amp;#160; This is an unusual restriction and may create slight problems in operating systems that were written in unawareness of this.&amp;#160; The &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wired &lt;/ins&gt;register permits changing the number of &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wired &lt;/ins&gt;entries.&amp;#160; Again TLB flushing is optimized by an 8-bit tag.&amp;#160; Unlike on the R2000-style TLB it's called ''ASID'' however. Just like on the R2000 TLB manipulation is done through 4 special instructions, ''tlbp'', ''tlbr'', ''tlbwi'', ''tlbwr''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== R8000-style TLB ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== R8000-style TLB ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ralf</name></author>	</entry>

	<entry>
		<id>//www.linux-mips.org/wiki?title=TLB&amp;diff=168&amp;oldid=prev</id>
		<title>Ralf at 14:26, 7 November 2004</title>
		<link rel="alternate" type="text/html" href="http://www.linux-mips.org/wiki?title=TLB&amp;diff=168&amp;oldid=prev"/>
				<updated>2004-11-07T14:26:26Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== General ==&lt;br /&gt;
TLB is the abreviation for ''Translation Lookaside Buffer''.  It's what MIPS calls the hardware unit which caches a few page table entries for translation of virtual to physical addresses.  Over the years four major types of TLBs have been designed for MIPS processors.&lt;br /&gt;
&lt;br /&gt;
== R2000-style TLB ==&lt;br /&gt;
This TLB always consists of 64 TLB entries.  Each TLB entry maps a single page.  The first 8 TLB entries are weired, that is they won't automatically be replaced by a ''tlbwr'' instruction.  Each TLB entry only maps a single single page and the page size is 4kB.  The TLB flushing is optimized by a 6-bit tag called ''PID''.  TLB manipulation is done through 4 special instructions, ''tlbp'', ''tlbr'', ''tlbwi'', ''tlbwr''.&lt;br /&gt;
&lt;br /&gt;
== R6000-style TLB ==&lt;br /&gt;
The [[R6000]] TLB is extremly unusual in that it in stores it's TLB entries in the last few lines of the second level cache.  While this may seem totally [http://en.wikipedia.org/wiki/Braindead_%281992_movie%29 braindead] at first it doesn't actually harm because regular loads and stores are interleaved with TLB activity in the second level cache.  Unlike other MIPS TLB designs on the R6000 MMU entries are manipulated though the cache instruction while the CPU is in a special mode that enables it to manipulate those cachelines that store the TLB entries.  This part of the cache is also called ''TLB Slice''.  Only the R6000 and it's slightly improved variant R6000A are using this kind of TLB organization.&lt;br /&gt;
&lt;br /&gt;
== R4000-style TLB ==&lt;br /&gt;
This TLB has been implemented with a varying number of entries ranging from 32 to 64; 48 is probably the most common value.  Each TLB entry can have a separate page size.  Typically the page size ranges from 4kB to 16MB, in *&amp;amp;nbsp;4 steps.  A few CPUs supprt 64MB or even 256MB page size.  On the low end a few TLBs also support 1kB pages.  Each TLB entry maps an adjacent pair of pages.  As the result the virtual address of a TLB entry needs to be aligned to twice the page size.  This is an unusual restriction and may create slight problems in operating systems that were written in unawareness of this.  The weird register permits changing the number of weird entries.  Again TLB flushing is optimized by an 8-bit tag.  Unlike on the R2000-style TLB it's called ''ASID'' however. Just like on the R2000 TLB manipulation is done through 4 special instructions, ''tlbp'', ''tlbr'', ''tlbwi'', ''tlbwr''.&lt;br /&gt;
&lt;br /&gt;
== R8000-style TLB ==&lt;br /&gt;
The [[R8000]] being one of the oddball processors of the MIPS family of course had to have it's own TLB architecture also.  TLB is organized as 3-way set associative.  Each set contains 128 entries each mapping a single page.  The page size can be set separately for ''kernel mode'' and ''user mode'' on the R8000 that is all pages in a particular mode will share the page size.  Page sizes offered are 4kB, 8kB, 16kB, 64kB, 1MB, 4MB and 16MB.  This means the R8000 TLB architecture is the only to offer 8kB.  It's also the only which doesn't offer 256kB page size though it offers larger page sizes.  The R8000 is the only MIPS CPU which uses this style of TLB.  Similar to the [[R4000]] TLB manipulation is performed through 3 special instructions, ''tlbp'', ''tlbw'', ''tlbr''.  That is there is no ''tlbwr'' instruction and the ''tlbwi'' instruction being the only TLB write instruction is named ''tlbw''.&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
* http://en.wikipedia.org/wiki/TLB Wikipedia TLB article&lt;/div&gt;</summary>
		<author><name>Ralf</name></author>	</entry>

	</feed>