Project

General

Profile

MMU description » History » Version 23

Taya Sergeeva, 02/11/2013 05:47 PM

1 1 Taya Sergeeva
h1. MMU description
2
3 22 Taya Sergeeva
The MMU grammar is in ru.ispras.microtesk.translator.mmu.grammar folder. It contains Lexer, Parser and TreeWalker files. These files can be compiled by build.xml file (microtesk++/build.xml). The files generated (MMULexer.java, MMUParser.java, MMUTreeWalker.java) are in microtesk++.gen.ru.ispras.microtesk.translator.mmu.grammar folder. 
4 1 Taya Sergeeva
5 22 Taya Sergeeva
The folders ru.ispras.microtesk.translator.mmu.ir.* contain the inner representation of the MMU hierarchy of one buffer.  
6 1 Taya Sergeeva
7 22 Taya Sergeeva
MMU translator is in the ru.ispras.microtesk.translator.mmu.translator folder. 
8
9
Files in ru.ispras.microtesk.model.api.mmu folder contain different policies of cache. Folder ru.ispras.microtesk.model.api.mmu.buffer contains the model of MMU - the files which describe Buffer, Set, Line, Address expressions.  
10
11
After grammar files being generated the file ''BufferExample'' can be loaded to the translator.
12 1 Taya Sergeeva
13 19 Taya Sergeeva
For instance, this is an example of the buffer below:
14
15 10 Alexander Kamkin
<pre>
16 2 Taya Sergeeva
address PA  
17
{
18
	width = 40
19
}
20
21
buffer L1 
22
{
23
	sets = 4
24
	lines = 128
25
	line = (tag:30 data:256)
26
	index(addr:PA) = addr<9**8> 
27
	match(addr:PA) = line.tag == addr<39**10>	
28
	policy =  lru
29 10 Alexander Kamkin
}
30 1 Taya Sergeeva
</pre>
31
32
33
_Description of each constructor_ in the buffer example is below:
34 19 Taya Sergeeva
35
h3. ''address'' 
36
37
<pre>
38
  gives the width of the field occupied in bytes;
39
  ''address'' has a name; ''PA''(Physical Address) in our case; it also can be virtual (VA);
40
</pre>
41
42 21 Taya Sergeeva
h3. ''buffer''
43
44
<pre>
45
  has a name, ''L1'' in pur example; it can have names ''L2'' and ''TLB'' also;
46
  ''buffer'' can be described by different parameters, such sets, lines, index, match, policy, and so on, which number is infixed;
47
</pre>
48 1 Taya Sergeeva
49 15 Taya Sergeeva
h3.  ''set'' 
50 16 Taya Sergeeva
51 15 Taya Sergeeva
<pre>
52 1 Taya Sergeeva
  is an associativity of a buffer; it returns the number of lines in a one set;
53 15 Taya Sergeeva
</pre>
54 1 Taya Sergeeva
55 15 Taya Sergeeva
h3.  ''lines''
56 17 Taya Sergeeva
57 15 Taya Sergeeva
<pre>
58 1 Taya Sergeeva
  is the number of lines in a given buffer;
59 15 Taya Sergeeva
</pre>
60 13 Taya Sergeeva
61 15 Taya Sergeeva
h3.  ''line''
62 17 Taya Sergeeva
63 15 Taya Sergeeva
<pre>
64 1 Taya Sergeeva
  designates the specific line in which the necessary data will be looking for; 
65
  ''line'' includes its own parameters in the braces: ''tag'' and ''data'', each of them has an appropriate width of the fields kept in bytes;
66
  in our example ''line'' has only two parameters, but in general case it can include more;
67 15 Taya Sergeeva
</pre>
68 14 Taya Sergeeva
69 15 Taya Sergeeva
h3.  ''index''
70 17 Taya Sergeeva
71 15 Taya Sergeeva
<pre>
72 1 Taya Sergeeva
   returns the initial and the final points of the field kept in bytes; they are marked in a three-cornered brackets, after ''addr'';
73 14 Taya Sergeeva
  ''index'' depends on an ''address'', which is ''physical'' (PA) in our case; the type of an address is set in the braces after ''index''; 
74 15 Taya Sergeeva
</pre>
75 1 Taya Sergeeva
76 15 Taya Sergeeva
h3.  ''match'' 
77 17 Taya Sergeeva
78 1 Taya Sergeeva
<pre>
79 16 Taya Sergeeva
  returns ''true'' or ''false'' depending on if the data required is in the given line or not; 
80
  it returns ''true'' if there is a ''hit'' in the line, and returns ''false'' otherwise;
81 14 Taya Sergeeva
  ''match'' description contains the the initial and the final points of the address field in the triangle brackets after ''addr''; 
82 1 Taya Sergeeva
  as ''index'' in the round braces ''match'' also has the type of the address used; ''PA'' in our case;
83 15 Taya Sergeeva
</pre>
84 13 Taya Sergeeva
85 15 Taya Sergeeva
h3.  ''policy''
86 17 Taya Sergeeva
87 15 Taya Sergeeva
<pre>
88 20 Taya Sergeeva
  sets a policy which will be applied to our buffer, ''lru'' (Least Recently Used) in our example;
89
  policy also can be ''plru'' (Pseudo LRU) and ''fifo'' (First Input First Out).
90 15 Taya Sergeeva
</pre>