123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353 |
- PSIM 1.0.1 - Model of the PowerPC Environments
- Copyright (C) 1994-1996, Andrew Cagney <cagney@highland.com.au>.
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, see <http://www.gnu.org/licenses/>.
-
- ----------------------------------------------------------------------
- PSIM is a program written in extended ANSI-C that implements an
- instruction level simulation of the PowerPC environment. It is freely
- available in source code form under the terms of the GNU General
- Public License (version 3 or later).
- The PowerPC Architecture is described as having three levels of
- compliance:
- UEA - User Environment Architecture
- VEA - Virtual Environment Architecture
- OEA - Operating Environment Architecture
- PSIM both implements all three levels of the PowerPC and includes (for
- each level) a corresponding simulated run-time environment.
- In addition, PSIM, to the execution unit level, models the performance
- of most of the current PowerPC implementations (contributed by Michael
- Meissner). This detailed performance monitoring (unlike many other
- simulators) resulting in only a relatively marginal reduction in the
- simulators performance.
- A description of how to build PSIM is contained in the file:
- ftp://ftp.ci.com.au/pub/psim/INSTALL
- or ftp://cambridge.cygnus.com/pub/psim/INSTALL
- while an overview of how to use PSIM is in:
- ftp://ftp.ci.com.au/pub/psim/RUN
- or ftp://cambridge.cygnus.com/pub/psim/RUN
- This file is found in:
- ftp://ftp.ci.com.au/pub/psim/README
- or ftp://cambridge.cygnus.com/pub/psim/README
- Thanks goes firstly to:
- Corinthian Engineering Pty Ltd
- Cygnus Support
- Highland Logic Pty Ltd
- who provided the resources needed for making this software available
- on the Internet.
- More importantly I'd like to thank the following individuals who each
- contributed in their own unique way:
- Allen Briggs, Bett Koch, David Edelsohn, Gordon Irlam,
- Michael Meissner, Bob Mercier, Richard Perini, Dale Rahn,
- Richard Stallman, Mitchele Walker
- Andrew Cagney
- Feb, 1995
- ----------------------------------------------------------------------
- What features does PSIM include?
- Monitoring and modeling
- PSIM includes (thanks to Michael Meissner)
- a detailed model of most of the PowerPC
- implementations to the functional unit level.
- SMP
-
- The PowerPC ISA defines SMP synchronizing instructions.
- This simulator implements a limited, but functional,
- subset of the PowerPC synchronization instructions
- behaviour. Programs that restrict their synchronization
- primitives to those that work with this functional
- sub-set (eg P() and V()) are able to run on the SMP
- version of PSIM.
- People intending to use this system should study
- the code implementing the lwarx instruction.
-
- ENDIAN SUPPORT
- PSIM implements the PowerPC's big and little (xor
- endian) modes and correctly simulates code that
- switches between these two modes.
- In addition, psim can model a true little-endian
- machine.
- ISA (Instruction Set Architecture) models
- PSIM includes a model of the UEA, VEA and OEA. This
- includes the time base registers (VEA) and HTAB
- and BATS (OEA).
- In addition, a preliminary model of the 64 bit
- PowerPC architecture is implemented.
- IO Hardware
- PSIM's internals are based around the concept
- of a Device Tree. This tree intentionally
- resembles that of the Device Tree found in
- OpenBoot firmware. PSIM is flexible enough
- to allow the user to fully configure this device
- tree (and consequently the hardware model) at
- run time.
- Run-time environments:
- PSIM's UEA model includes emulation for BSD
- based UNIX system calls.
- PSIM's OEA model includes emulation of either:
- o OpenBoot client interface
- o MOTO's BUG interface.
- Floating point
- Preliminary support for floating point is included.
- Who would be interested in PSIM?
- o the curious
- Using psim, gdb, gcc and binutils the curious
- user can construct an environment that allows
- them to play with PowerPC Environment without
- the need for real hardware.
- o the analyst
- PSIM includes many (contributed) monitoring
- features which (unlike many other simulators)
- do not come with a great penalty in performance.
- Thus the performance analyst is able to use
- this simulator to analyse the performance of
- the system under test.
- If PSIM doesn't monitor a components of interest,
- the source code is freely available, and hence
- there is no hinderance to changing things
- to meet a specific analysts needs.
- o the serious SW developer
- PSIM models all three levels of the PowerPC
- Architecture: UEA, VEA and OEA. Further,
- the internal design is such that PSIM can
- be extended to support additional requirements.
- What performance analysis measurements can PSIM perform?
- Below is the output from a recent analysis run
- (contributed by Michael Meissner):
- For the following program:
- long
- simple_rand ()
- {
- static unsigned long seed = 47114711;
- unsigned long this = seed * 1103515245 + 12345;
- seed = this;
- /* cut-cut-cut - see the file RUN.psim */
- }
- Here is the current output generated with the -I switch on a P90
- (the compiler used is the development version of GCC with a new
- scheduler replacing the old one):
-
- CPU #1 executed 41,994 AND instructions.
- CPU #1 executed 519,785 AND Immediate instructions.
- .
- .
- .
- CPU #1 executed 1 System Call instruction.
- CPU #1 executed 207,746 XOR instructions.
-
- CPU #1 executed 23,740,856 cycles.
- CPU #1 executed 10,242,780 stalls waiting for data.
- CPU #1 executed 1 stall waiting for a function unit.
- .
- .
- .
- CPU #1 executed 3,136,229 branch functional unit instructions.
- CPU #1 executed 16,949,396 instructions that were accounted for in timing info.
- CPU #1 executed 871,920 data reads.
- CPU #1 executed 971,926 data writes.
- CPU #1 executed 221 icache misses.
- CPU #1 executed 16,949,396 instructions in total.
-
- Simulator speed was 250,731 instructions/second
- What motivated PSIM?
- As an idea, psim was first discussed seriously during mid
- 1994. At that time its main objectives were:
- o good performance
- Many simulators loose out by only providing
- a binary interface to the internals. This
- interface eventually becomes a bottle neck
- in the simulators performance.
- It was intended that PSIM would avoid this
- problem by giving the user access to the
- full source code.
- Further, by exploiting the power of modern
- compilers it was hoped that PSIM would achieve
- good performance with out having to compromise
- its internal design.
- o practical portability
- Rather than try to be portable to every
- C compiler on every platform, it was decided
- that PSIM would restrict its self to supporting
- ANSI compilers that included the extension
- of a long long type.
- GCC is one such compiler, consequently PSIM
- should be portable to any machine running GCC.
- o flexibility in its design
- PSIM should allow the user to select the
- features required and customise the build
- accordingly. By having the source code,
- the compiler is able to eliminate any un
- used features of the simulator.
- After all, let the compiler do the work.
- o SMP
- A model that allowed the simulation of
- SMP platforms with out the large overhead
- often encountered with such models.
- PSIM achieves each of these objectives.
- Is PSIM PowerPC Platform (PPCP) (nee CHRP) Compliant?
- No.
- Among other things it does not have an Apple ROM socket.
- Could PSIM be extended so that it models a CHRP machine?
- Yes.
- PSIM has been designed with the CHRP spec in mind. To model
- a CHRP desktop the following would need to be added:
- o An apple ROM socket :-)
- o Model of each of the desktop IO devices
- o An OpenPIC device.
- o RTAS (Run Time Abstraction Services).
- o A fully populated device tree.
- Is the source code available?
- Yes.
- The source code to PSIM is available under the terms of
- the GNU Public Licence. This allows you to distribute
- the source code for free but with certain conditions.
- See the file:
- ftp://archie.au/gnu/COPYING
- For details of the terms and conditions.
- Where do I send bugs or report problems?
- There is a mailing list (subscribe through majordomo@ci.com.au) at:
- powerpc-psim@ci.com.au
- If I get the ftp archive updated I post a note to that mailing list.
- In addition your welcome to send bugs or problems either to me or to
- that e-mail list.
- This list currently averages zero articles a day.
- Does PSIM have any limitations or problems?
- PSIM can't run rs6000/AIX binaries - At present PSIM can only
- simulate static executables. Since an AIX executable is
- never static, PSIM is unable to simulate its execution.
- PSIM is still under development - consequently there are going
- to be bugs.
- See the file BUGS (included in the distribution) for any
- other outstanding issues.
|