16 | | <core size_data="..." > <!-- 1 --> |
17 | | |
18 | | <cache_unit> <!-- 1 --> |
19 | | |
20 | | <icache id="..." |
21 | | arbiter="..." |
22 | | nb_port="..." /> <!-- 1+ --> |
23 | | |
24 | | <dcache id="..." |
25 | | arbiter="..." |
26 | | nb_port="..." /> <!-- 1+ --> |
27 | | |
28 | | </cache_unit> |
29 | | |
30 | | <front_end id="..." |
31 | | link_icache="..." |
32 | | link_out_of_order_engine="..."> <!-- 1+ --> |
33 | | |
34 | | <fetch_unit> <!-- 1 --> |
35 | | |
36 | | <ifetch id="..." |
37 | | nb_inst="..." |
38 | | size_queue="..." |
39 | | link_decod="..." /> <!-- 1+ --> |
40 | | |
41 | | </fetch_unit> |
42 | | |
43 | | <prediction_unit arbiter="..." |
44 | | nb_prediction="..." |
45 | | nb_branch_complete="..." > <!-- 1 --> |
46 | | |
47 | | <branch_target_buffer size_queue="..." |
48 | | associativity="..." /> <!-- 1 --> |
49 | | |
50 | | <return_address_stack size_queue="..." /> <!-- 1 --> |
51 | | |
52 | | <branch_context size_queue="..." /> <!-- 1 --> |
53 | | |
54 | | <meta_predictor have_meta_predictor="..." |
55 | | predictor_0_have_bht="..." |
56 | | predictor_0_bht_size_shifter="..." |
57 | | predictor_0_bht_nb_shifter="..." |
58 | | predictor_0_have_pht="..." |
59 | | predictor_0_pht_size_counter="..." |
60 | | predictor_0_pht_nb_counter="..." |
61 | | predictor_0_pht_size_address_share="..." |
62 | | predictor_1_have_bht="..." |
63 | | predictor_1_bht_size_shifter="..." |
64 | | predictor_1_bht_nb_shifter="..." |
65 | | predictor_1_have_pht="..." |
66 | | predictor_1_pht_size_counter="..." |
67 | | predictor_1_pht_nb_counter="..." |
68 | | predictor_1_pht_size_address_share="..." |
69 | | predictor_2_have_bht="..." |
70 | | predictor_2_bht_size_shifter="..." |
71 | | predictor_2_bht_nb_shifter="..." |
72 | | predictor_2_have_pht="..." |
73 | | predictor_2_pht_size_counter="..." |
74 | | predictor_2_pht_nb_counter="..." |
75 | | predictor_2_pht_size_address_share="..." /> <!-- 1 --> |
76 | | </prediction_unit> |
77 | | |
78 | | <decod_unit> <!-- 1 --> |
79 | | |
80 | | <decod id="..." |
81 | | arbiter="..." |
82 | | nb_branch_decod="..." |
83 | | nb_inst="..." |
84 | | size_queue="..." |
85 | | link_rename="..." /> <!-- 1+ --> |
86 | | |
87 | | </decod_unit> |
88 | | |
89 | | </front_end> |
90 | | |
91 | | <out_of_order_engine id="..." |
92 | | link_execution_loop="..."> <!-- 1+ --> |
93 | | |
94 | | <rename arbiter="..." |
95 | | nb_inst="..." |
96 | | size_queue="..." |
97 | | size_windows="..." |
98 | | nb_gpr_physical="..." |
99 | | nb_gpr_free="..." |
100 | | nb_spr_physical="..." |
101 | | nb_spr_free="..." /> <!-- 1+ --> |
102 | | |
103 | | <commit arbiter="..." |
104 | | nb_inst="..." |
105 | | size_queue="..." |
106 | | size_windows="..." |
107 | | commit_out_of_order_thread="..." /> <!-- 1 --> |
108 | | |
109 | | </out_of_order_engine> |
110 | | |
111 | | <execution_loop id="..." |
112 | | link_dcache="..." > <!-- 1+ --> |
113 | | |
114 | | <read_unit> <!-- 1 --> |
115 | | |
116 | | <reservation_station id="..." |
117 | | size_queue="..." |
118 | | one_queue="..." > <!-- 1+ --> |
119 | | |
120 | | <link id="..."> <!-- 1+ --> |
121 | | |
122 | | </reservation_station> |
123 | | |
124 | | </read_unit> |
125 | | |
126 | | <memory_unit size_queue="..." |
127 | | one_queue="..." |
128 | | nb_inst="..." |
129 | | size_windows="..." |
130 | | bypass_memory_out="..." |
131 | | keep_data="..." |
132 | | speculated_memory_read="..." > <!-- 1 --> |
133 | | |
134 | | <link id="..."> <!-- 1+ --> |
135 | | |
136 | | </memory_unit> |
137 | | |
138 | | <execution_unit> <!-- 1 --> |
139 | | |
140 | | <execution id="..." |
141 | | type_mul="..." |
142 | | type_div="..." |
143 | | type_ext="..." |
144 | | type_ff1="..." |
145 | | type_fl1="..." /> <!-- 1+ --> |
146 | | |
147 | | </execution_unit> |
148 | | |
149 | | <write_unit> <!-- 1 --> |
150 | | |
151 | | <writeback id="..." |
152 | | size_queue="..." |
153 | | one_queue="..." |
154 | | bypass_execute_gpr="..." |
155 | | bypass_execute_spr="..." |
156 | | bypass_memory_in="..." > <!-- 1+ --> |
157 | | |
158 | | <link id="..."> <!-- 1+ --> |
159 | | |
160 | | </writeback> |
161 | | |
162 | | </write_unit> |
163 | | |
164 | | </execution_loop> |
165 | | |
166 | | </core> |
167 | | |
168 | | </cpu> |
169 | | |
170 | | }}} |
171 | | |
172 | | Un petit exemple : |
173 | | |
174 | | {{{ |
175 | | <?xml version="1.0" encoding="ISO-8859-1" ?> |
176 | | |
177 | | <cpu name="nom_instance" > |
178 | | |
179 | | <core size_data="32" > |
180 | | |
181 | | <cache_unit> |
182 | | <icache id="0" arbiter="0" nb_port="1" /> |
183 | | <dcache id="0" arbiter="0" nb_port="1" /> |
184 | | </cache_unit> |
185 | | |
186 | | <front_end id="0" link_icache="0" link_out_of_order_engine="0"> |
187 | | <fetch_unit> |
188 | | <ifetch id="0" nb_inst="1" size_queue="4" link_decod="0" /> |
189 | | <ifetch id="1" nb_inst="1" size_queue="4" link_decod="0" /> |
190 | | </fetch_unit> |
191 | | |
192 | | <prediction_unit arbiter="0" nb_prediction="1" nb_branch_complete="1" > |
193 | | <branch_target_buffer size_queue="32" associativity="4" /> |
194 | | <return_address_stack size_queue="8" /> |
195 | | <branch_context size_queue="8" /> |
196 | | <meta_predictor have_meta_predictor="1" |
197 | | predictor_0_have_bht="1" |
198 | | predictor_0_bht_size_shifter="10" |
199 | | predictor_0_bht_nb_shifter="16" |
200 | | predictor_0_have_pht="0" |
201 | | predictor_1_have_bht="0" |
202 | | predictor_1_have_pht="1" |
203 | | predictor_1_pht_size_counter="2" |
204 | | predictor_1_pht_nb_counter="64" |
205 | | predictor_1_pht_size_address_share="3" |
206 | | predictor_2_have_bht="1" |
207 | | predictor_2_bht_size_shifter="4" |
208 | | predictor_2_bht_nb_shifter="32" |
209 | | predictor_2_have_pht="1" |
210 | | predictor_2_pht_size_counter="2" |
211 | | predictor_2_pht_nb_counter="32" |
212 | | predictor_2_pht_size_address_share="4" /> |
213 | | </prediction_unit> |
214 | | |
215 | | <decod_unit> |
216 | | <decod id="0" arbiter="0" nb_branch_decod="1" nb_inst="1" size_queue="4" link_rename="0" /> |
217 | | </decod_unit> |
218 | | |
219 | | </front_end> |
220 | | |
221 | | <out_of_order_engine id="0" link_execution_loop="0"> <!-- 1+ --> |
222 | | |
223 | | <rename arbiter="1" |
224 | | nb_inst="1" |
225 | | size_queue="8" |
226 | | size_windows="3" |
227 | | nb_gpr_physical="64" |
228 | | nb_gpr_free="2" |
229 | | nb_spr_physical="16" |
230 | | nb_spr_free="1" /> |
231 | | |
232 | | <commit arbiter="0" |
233 | | nb_inst="1" |
234 | | size_queue="32" |
235 | | size_windows="2" |
236 | | commit_out_of_order_thread="1" /> |
237 | | |
238 | | </out_of_order_engine> |
239 | | |
240 | | <execution_loop id="0"> |
241 | | |
242 | | <read_unit> |
243 | | <reservation_station id="0" size_queue="4" one_queue="1" > |
244 | | <link id="0"> |
245 | | </reservation_station> |
246 | | </read_unit> |
247 | | |
248 | | <memory_unit size_queue="8" |
249 | | one_queue="1" |
250 | | nb_inst="1" |
251 | | size_windows="2" |
252 | | bypass_memory_out="1" |
253 | | keep_data="1" |
254 | | speculated_memory_read="1" > |
255 | | <link id="0"> |
256 | | </memory_unit> |
257 | | |
258 | | <execution_unit> |
259 | | <execution id="0" |
260 | | type_mul="1" |
261 | | type_div="0" |
262 | | type_ext="0" |
263 | | type_ff1="1" |
264 | | type_fl1="1" /> |
265 | | </execution_unit> |
266 | | |
267 | | <write_unit> |
268 | | <writeback id="0" |
269 | | size_queue="4" |
270 | | one_queue="1" |
271 | | bypass_execute_gpr="1" |
272 | | bypass_execute_spr="1" |
273 | | bypass_memory_in="0" > |
274 | | <link id="0"> |
275 | | </writeback> |
276 | | </write_unit> |
277 | | |
278 | | </execution_loop> |
279 | | </core> |
280 | | </cpu> |
281 | | |
282 | | }}} |
283 | | |
284 | | |
285 | | Autres exemple : |
286 | | |
287 | | {{{ |
288 | | <?xml version="1.0" encoding="ISO-8859-1" ?> |
289 | | |
290 | | <cpu name="nom_instance" > |
291 | | |