| |
| |
| 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. |
| |