a SPARC Version 8 Instruction Set Emulator
Tkisem is an instructional emulator for version 8 of the SPARC instruction set with a GUI based on Tcl/Tk. The name is a concatenation of tk and isem. Isem is a pseduo-acronym (we don't usually write it in all caps) for Instructional Sparc EMulator.
How to get tkisem
Screen shots (approx 100 KB).
Key features of tkisem
Tkisem was designed to be used in teaching the fundamentals of computer systems. The goal is to provide an environment where students can run SPARC programs ranging from simple calculations intended to illustrate the SPARC instruction set, to interrupt handlers intended to illustrate the principles of device management/communication.
To this end tkisem provides the following features:
- a full emulation of the SPARC Version 8 integer unit,
- all exceptions, faults, interrupts, and traps are handled by SPARC code that can be examined and modified by students,
- support for a variety of devices, the following devices are currently supported:
- a character oriented console,
- a graphics accelerator,
- an interval timer, and
- a UART,
- a window to display the registers defined by the SPARC integer unit,
- windows to display instructions in the text (program) segments for the user and supervisor memories,
- windows to display the data segments for the user and supervisor memories,
- single step execution for user and/or supervisor instructions,
- breakpoints for user and supervisor instructions, and
- an interactive help system.
From the perspective of emulating the SPARC, there are a several features that tkisem is missing:
- Tkisem has a full emulation of the SPARC floating point unit. However, at this time, tkisem does not have any windows to display the floating point registers.
- The MMU implemented in tkisem doesn't follow the Version 8 suggested implementation. This may or may not be a problem -- most people won't care too much.
There are also some aspects of the user interface that we'll probably fix as time permits:
There are also some features we probably won't fix:
- Tkisem needs watch point support for registers and the user and supervisor data memories.
- Currently, you can't reset tkisem to a sane state once the processor enters an error state, the only thing you can do is to restart tkisem -- this needs to be fixed.
- More devices. Tkisem needs more devices. It should be easy to add multiple UARTs (in case 1 isn't enough). We also need a parallel device and a disk and/or SCSI controller. (If you have any interest in writing devices, send mail to firstname.lastname@example.org.)
- Tkisem no longer supports a pure text interface, you pretty much have to run it in a windowing environment. We have a pretty good start on this one, but it may be quite a while before it's included in the releases.
- Tkisem needs to support user preference and configurations scripts to let users select things like fonts and colors.
If you want to add to any of these lists, send mail to email@example.com.
- Programs are loaded using C++ code in the emulator, not by SPARC code in the ROM. This is reasonable for writing introductory systems programs, but doesn't quite cut it if you want to write pseudo-OS code.
We have written a pretty substantial part of a laboratory manual, which you are free to use in your classes: compressed postscript (approx 220 KB) or pdf (approx 480KB). (Warning, the first lab documents the old, text based, interface which is no longer supported. Also, several of the later labs still haven't been written.)
There is also a reference card available via ftp (postscript, approx 80 KB). This card (3 single-sided pages) documents the SPARC integer unit registers and instruction set, along with the traps provided by the tkisem ROM code.
A lot of this material was developed in association with the textbook, Computer Systems: Architecture, Organization, and Programming by Arthur Maccabe. If all goes well, a large part of the lab manual will be integrated into the second edition of this book.
Who we areTkisem started out as ISEM. ISEM was developed by a group of students, in the CS department at UNM. The initial development was lead by Jeff P. Vandyke and included Gerard Rollins, Robert Mueller, Phil Tse, and David Osborne. After the initial development was completed, Ruth McDonald wrote the FPU emulator.
Barney Maccabe developed the tk interface and introduced the ROM code. Dave Ackley added lots of useful features to the interface and cleaned up a lot of the presentation. Barney takes the blame for the strange parts of the interface that remain, and Dave gets lots of points for building the initial help file and adding PC and breakpoint displays to the text windows.
Pat Vaughan cleaned up a lot of the tcl code and implemented the UART.
The folks at SPARC International have asked me to include the following:
SPARC International, Inc. is the owner of the SPARC trademark. Products bearing the SPARC trademarks are based on an Architecture developed by Sun Microsystems, Inc.
Barney Maccabe Last modified: Mon Feb 14 15:33:55 MST 2000