1 |
106 |
markom |
|
2 |
|
|
|
3 |
|
|
PSIM 1.0.1 - Model of the PowerPC Environments
|
4 |
|
|
|
5 |
|
|
|
6 |
|
|
Copyright (C) 1994-1996, Andrew Cagney .
|
7 |
|
|
|
8 |
|
|
This program is free software; you can redistribute it and/or modify
|
9 |
|
|
it under the terms of the GNU General Public License as published by
|
10 |
|
|
the Free Software Foundation; either version 2 of the License, or
|
11 |
|
|
(at your option) any later version.
|
12 |
|
|
|
13 |
|
|
This program is distributed in the hope that it will be useful,
|
14 |
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15 |
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16 |
|
|
GNU General Public License for more details.
|
17 |
|
|
|
18 |
|
|
You should have received a copy of the GNU General Public License
|
19 |
|
|
along with this program; if not, write to the Free Software
|
20 |
|
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
21 |
|
|
|
22 |
|
|
|
23 |
|
|
----------------------------------------------------------------------
|
24 |
|
|
|
25 |
|
|
|
26 |
|
|
PSIM is a program written in extended ANSI-C that implements an
|
27 |
|
|
instruction level simulation of the PowerPC environment. It is freely
|
28 |
|
|
available in source code form under the terms of the GNU General
|
29 |
|
|
Public License (version 2 or later).
|
30 |
|
|
|
31 |
|
|
The PowerPC Architecture is described as having three levels of
|
32 |
|
|
compliance:
|
33 |
|
|
|
34 |
|
|
UEA - User Environment Architecture
|
35 |
|
|
VEA - Virtual Environment Architecture
|
36 |
|
|
OEA - Operating Environment Architecture
|
37 |
|
|
|
38 |
|
|
PSIM both implements all three levels of the PowerPC and includes (for
|
39 |
|
|
each level) a corresponding simulated run-time environment.
|
40 |
|
|
|
41 |
|
|
In addition, PSIM, to the execution unit level, models the performance
|
42 |
|
|
of most of the current PowerPC implementations (contributed by Michael
|
43 |
|
|
Meissner). This detailed performance monitoring (unlike many other
|
44 |
|
|
simulators) resulting in only a relatively marginal reduction in the
|
45 |
|
|
simulators performance.
|
46 |
|
|
|
47 |
|
|
|
48 |
|
|
A description of how to build PSIM is contained in the file:
|
49 |
|
|
|
50 |
|
|
ftp://ftp.ci.com.au/pub/psim/INSTALL
|
51 |
|
|
or ftp://cambridge.cygnus.com/pub/psim/INSTALL
|
52 |
|
|
|
53 |
|
|
while an overview of how to use PSIM is in:
|
54 |
|
|
|
55 |
|
|
ftp://ftp.ci.com.au/pub/psim/RUN
|
56 |
|
|
or ftp://cambridge.cygnus.com/pub/psim/RUN
|
57 |
|
|
|
58 |
|
|
This file is found in:
|
59 |
|
|
|
60 |
|
|
ftp://ftp.ci.com.au/pub/psim/README
|
61 |
|
|
or ftp://cambridge.cygnus.com/pub/psim/README
|
62 |
|
|
|
63 |
|
|
|
64 |
|
|
Thanks goes firstly to:
|
65 |
|
|
|
66 |
|
|
Corinthian Engineering Pty Ltd
|
67 |
|
|
Cygnus Support
|
68 |
|
|
Highland Logic Pty Ltd
|
69 |
|
|
|
70 |
|
|
who provided the resources needed for making this software available
|
71 |
|
|
on the Internet.
|
72 |
|
|
|
73 |
|
|
More importantly I'd like to thank the following individuals who each
|
74 |
|
|
contributed in their own unique way:
|
75 |
|
|
|
76 |
|
|
Allen Briggs, Bett Koch, David Edelsohn, Gordon Irlam,
|
77 |
|
|
Michael Meissner, Bob Mercier, Richard Perini, Dale Rahn,
|
78 |
|
|
Richard Stallman, Mitchele Walker
|
79 |
|
|
|
80 |
|
|
|
81 |
|
|
Andrew Cagney
|
82 |
|
|
Feb, 1995
|
83 |
|
|
|
84 |
|
|
|
85 |
|
|
----------------------------------------------------------------------
|
86 |
|
|
|
87 |
|
|
|
88 |
|
|
What features does PSIM include?
|
89 |
|
|
|
90 |
|
|
Monitoring and modeling
|
91 |
|
|
|
92 |
|
|
PSIM includes (thanks to Michael Meissner)
|
93 |
|
|
a detailed model of most of the PowerPC
|
94 |
|
|
implementations to the functional unit level.
|
95 |
|
|
|
96 |
|
|
|
97 |
|
|
SMP
|
98 |
|
|
|
99 |
|
|
The PowerPC ISA defines SMP synchronizing instructions.
|
100 |
|
|
This simulator implements a limited, but functional,
|
101 |
|
|
subset of the PowerPC synchronization instructions
|
102 |
|
|
behaviour. Programs that restrict their synchronization
|
103 |
|
|
primitives to those that work with this functional
|
104 |
|
|
sub-set (eg P() and V()) are able to run on the SMP
|
105 |
|
|
version of PSIM.
|
106 |
|
|
|
107 |
|
|
People intending to use this system should study
|
108 |
|
|
the code implementing the lwarx instruction.
|
109 |
|
|
|
110 |
|
|
ENDIAN SUPPORT
|
111 |
|
|
|
112 |
|
|
PSIM implements the PowerPC's big and little (xor
|
113 |
|
|
endian) modes and correctly simulates code that
|
114 |
|
|
switches between these two modes.
|
115 |
|
|
|
116 |
|
|
In addition, psim can model a true little-endian
|
117 |
|
|
machine.
|
118 |
|
|
|
119 |
|
|
ISA (Instruction Set Architecture) models
|
120 |
|
|
|
121 |
|
|
PSIM includes a model of the UEA, VEA and OEA. This
|
122 |
|
|
includes the time base registers (VEA) and HTAB
|
123 |
|
|
and BATS (OEA).
|
124 |
|
|
|
125 |
|
|
In addition, a preliminary model of the 64 bit
|
126 |
|
|
PowerPC architecture is implemented.
|
127 |
|
|
|
128 |
|
|
IO Hardware
|
129 |
|
|
|
130 |
|
|
PSIM's internals are based around the concept
|
131 |
|
|
of a Device Tree. This tree intentionally
|
132 |
|
|
resembles that of the Device Tree found in
|
133 |
|
|
OpenBoot firmware. PSIM is flexible enough
|
134 |
|
|
to allow the user to fully configure this device
|
135 |
|
|
tree (and consequently the hardware model) at
|
136 |
|
|
run time.
|
137 |
|
|
|
138 |
|
|
Run-time environments:
|
139 |
|
|
|
140 |
|
|
PSIM's UEA model includes emulation for BSD
|
141 |
|
|
based UNIX system calls.
|
142 |
|
|
|
143 |
|
|
PSIM's OEA model includes emulation of either:
|
144 |
|
|
|
145 |
|
|
o OpenBoot client interface
|
146 |
|
|
|
147 |
|
|
o MOTO's BUG interface.
|
148 |
|
|
|
149 |
|
|
|
150 |
|
|
Floating point
|
151 |
|
|
|
152 |
|
|
Preliminary support for floating point is included.
|
153 |
|
|
|
154 |
|
|
|
155 |
|
|
Who would be interested in PSIM?
|
156 |
|
|
|
157 |
|
|
o the curious
|
158 |
|
|
|
159 |
|
|
Using psim, gdb, gcc and binutils the curious
|
160 |
|
|
user can construct an environment that allows
|
161 |
|
|
them to play with PowerPC Environment without
|
162 |
|
|
the need for real hardware.
|
163 |
|
|
|
164 |
|
|
|
165 |
|
|
o the analyst
|
166 |
|
|
|
167 |
|
|
PSIM includes many (contributed) monitoring
|
168 |
|
|
features which (unlike many other simulators)
|
169 |
|
|
do not come with a great penalty in performance.
|
170 |
|
|
|
171 |
|
|
Thus the performance analyst is able to use
|
172 |
|
|
this simulator to analyse the performance of
|
173 |
|
|
the system under test.
|
174 |
|
|
|
175 |
|
|
If PSIM doesn't monitor a components of interest,
|
176 |
|
|
the source code is freely available, and hence
|
177 |
|
|
there is no hinderance to changing things
|
178 |
|
|
to meet a specific analysts needs.
|
179 |
|
|
|
180 |
|
|
|
181 |
|
|
o the serious SW developer
|
182 |
|
|
|
183 |
|
|
PSIM models all three levels of the PowerPC
|
184 |
|
|
Architecture: UEA, VEA and OEA. Further,
|
185 |
|
|
the internal design is such that PSIM can
|
186 |
|
|
be extended to support additional requirements.
|
187 |
|
|
|
188 |
|
|
|
189 |
|
|
What performance analysis measurements can PSIM perform?
|
190 |
|
|
|
191 |
|
|
Below is the output from a recent analysis run
|
192 |
|
|
(contributed by Michael Meissner):
|
193 |
|
|
|
194 |
|
|
For the following program:
|
195 |
|
|
|
196 |
|
|
long
|
197 |
|
|
simple_rand ()
|
198 |
|
|
{
|
199 |
|
|
static unsigned long seed = 47114711;
|
200 |
|
|
unsigned long this = seed * 1103515245 + 12345;
|
201 |
|
|
seed = this;
|
202 |
|
|
/* cut-cut-cut - see the file RUN.psim */
|
203 |
|
|
}
|
204 |
|
|
|
205 |
|
|
Here is the current output generated with the -I switch on a P90
|
206 |
|
|
(the compiler used is the development version of GCC with a new
|
207 |
|
|
scheduler replacing the old one):
|
208 |
|
|
|
209 |
|
|
CPU #1 executed 41,994 AND instructions.
|
210 |
|
|
CPU #1 executed 519,785 AND Immediate instructions.
|
211 |
|
|
.
|
212 |
|
|
.
|
213 |
|
|
.
|
214 |
|
|
CPU #1 executed 1 System Call instruction.
|
215 |
|
|
CPU #1 executed 207,746 XOR instructions.
|
216 |
|
|
|
217 |
|
|
CPU #1 executed 23,740,856 cycles.
|
218 |
|
|
CPU #1 executed 10,242,780 stalls waiting for data.
|
219 |
|
|
CPU #1 executed 1 stall waiting for a function unit.
|
220 |
|
|
.
|
221 |
|
|
.
|
222 |
|
|
.
|
223 |
|
|
CPU #1 executed 3,136,229 branch functional unit instructions.
|
224 |
|
|
CPU #1 executed 16,949,396 instructions that were accounted for in timing info.
|
225 |
|
|
CPU #1 executed 871,920 data reads.
|
226 |
|
|
CPU #1 executed 971,926 data writes.
|
227 |
|
|
CPU #1 executed 221 icache misses.
|
228 |
|
|
CPU #1 executed 16,949,396 instructions in total.
|
229 |
|
|
|
230 |
|
|
Simulator speed was 250,731 instructions/second
|
231 |
|
|
|
232 |
|
|
|
233 |
|
|
What motivated PSIM?
|
234 |
|
|
|
235 |
|
|
As an idea, psim was first discussed seriously during mid
|
236 |
|
|
1994. At that time its main objectives were:
|
237 |
|
|
|
238 |
|
|
|
239 |
|
|
o good performance
|
240 |
|
|
|
241 |
|
|
Many simulators loose out by only providing
|
242 |
|
|
a binary interface to the internals. This
|
243 |
|
|
interface eventually becomes a bottle neck
|
244 |
|
|
in the simulators performance.
|
245 |
|
|
|
246 |
|
|
It was intended that PSIM would avoid this
|
247 |
|
|
problem by giving the user access to the
|
248 |
|
|
full source code.
|
249 |
|
|
|
250 |
|
|
Further, by exploiting the power of modern
|
251 |
|
|
compilers it was hoped that PSIM would achieve
|
252 |
|
|
good performance with out having to compromise
|
253 |
|
|
its internal design.
|
254 |
|
|
|
255 |
|
|
|
256 |
|
|
o practical portability
|
257 |
|
|
|
258 |
|
|
Rather than try to be portable to every
|
259 |
|
|
C compiler on every platform, it was decided
|
260 |
|
|
that PSIM would restrict its self to supporting
|
261 |
|
|
ANSI compilers that included the extension
|
262 |
|
|
of a long long type.
|
263 |
|
|
|
264 |
|
|
GCC is one such compiler, consequently PSIM
|
265 |
|
|
should be portable to any machine running GCC.
|
266 |
|
|
|
267 |
|
|
|
268 |
|
|
o flexibility in its design
|
269 |
|
|
|
270 |
|
|
PSIM should allow the user to select the
|
271 |
|
|
features required and customise the build
|
272 |
|
|
accordingly. By having the source code,
|
273 |
|
|
the compiler is able to eliminate any un
|
274 |
|
|
used features of the simulator.
|
275 |
|
|
|
276 |
|
|
After all, let the compiler do the work.
|
277 |
|
|
|
278 |
|
|
|
279 |
|
|
o SMP
|
280 |
|
|
|
281 |
|
|
A model that allowed the simulation of
|
282 |
|
|
SMP platforms with out the large overhead
|
283 |
|
|
often encountered with such models.
|
284 |
|
|
|
285 |
|
|
|
286 |
|
|
PSIM achieves each of these objectives.
|
287 |
|
|
|
288 |
|
|
|
289 |
|
|
Is PSIM PowerPC Platform (PPCP) (nee CHRP) Compliant?
|
290 |
|
|
|
291 |
|
|
No.
|
292 |
|
|
|
293 |
|
|
Among other things it does not have an Apple ROM socket.
|
294 |
|
|
|
295 |
|
|
|
296 |
|
|
Could PSIM be extended so that it models a CHRP machine?
|
297 |
|
|
|
298 |
|
|
Yes.
|
299 |
|
|
|
300 |
|
|
PSIM has been designed with the CHRP spec in mind. To model
|
301 |
|
|
a CHRP desktop the following would need to be added:
|
302 |
|
|
|
303 |
|
|
o An apple ROM socket :-)
|
304 |
|
|
|
305 |
|
|
o Model of each of the desktop IO devices
|
306 |
|
|
|
307 |
|
|
o An OpenPIC device.
|
308 |
|
|
|
309 |
|
|
o RTAS (Run Time Abstraction Services).
|
310 |
|
|
|
311 |
|
|
o A fully populated device tree.
|
312 |
|
|
|
313 |
|
|
|
314 |
|
|
Is the source code available?
|
315 |
|
|
|
316 |
|
|
Yes.
|
317 |
|
|
|
318 |
|
|
The source code to PSIM is available under the terms of
|
319 |
|
|
the GNU Public Licence. This allows you to distribute
|
320 |
|
|
the source code for free but with certain conditions.
|
321 |
|
|
|
322 |
|
|
See the file:
|
323 |
|
|
|
324 |
|
|
ftp://archie.au/gnu/COPYING
|
325 |
|
|
|
326 |
|
|
For details of the terms and conditions.
|
327 |
|
|
|
328 |
|
|
|
329 |
|
|
Where do I send bugs or report problems?
|
330 |
|
|
|
331 |
|
|
There is a mailing list (subscribe through majordomo@ci.com.au) at:
|
332 |
|
|
|
333 |
|
|
powerpc-psim@ci.com.au
|
334 |
|
|
|
335 |
|
|
If I get the ftp archive updated I post a note to that mailing list.
|
336 |
|
|
In addition your welcome to send bugs or problems either to me or to
|
337 |
|
|
that e-mail list.
|
338 |
|
|
|
339 |
|
|
This list currently averages zero articles a day.
|
340 |
|
|
|
341 |
|
|
|
342 |
|
|
Does PSIM have any limitations or problems?
|
343 |
|
|
|
344 |
|
|
PSIM can't run rs6000/AIX binaries - At present PSIM can only
|
345 |
|
|
simulate static executables. Since an AIX executable is
|
346 |
|
|
never static, PSIM is unable to simulate its execution.
|
347 |
|
|
|
348 |
|
|
PSIM is still under development - consequently there are going
|
349 |
|
|
to be bugs.
|
350 |
|
|
|
351 |
|
|
See the file BUGS (included in the distribution) for any
|
352 |
|
|
other outstanding issues.
|
353 |
|
|
|