Heading:
Tamarin Software Tasks
Page Numbers: Yes X: 527 Y: 10.5"
Inter-Office Memorandum
ToDistributionDateMay 23, 1985
FromAlan BellLocationPalo Alto
SubjectTamarin Software TasksOrganizationPARC/ISL
XEROX
Filed on: [Ivy]<ABell>Tamarin-SoftwareTasks.bravo
This memo sketches out the software tasks of the Tamarin project. It is intended as a starting point to be able to discuss the amount of work and the timing involved. This describes tasks through the creation of the prototype machine and do not address any tasks required for productization.
Software management
The software aspects of the Tamarin project need to be managed. The software implementers will need supervision. Resource and schedule plans need to be created. Interaction with the AISBU management needs to be maintained to communicate needs, expectations, and commitments. A more complete version of this document needs to be created.
System Definition
Many changes are being made in the low-level data structures and algorithms to accomdate the improved hardware components of Tamarin. The algorithms and data-structures need to be outlined in enough detail to feel confident that the decisions are viable. This definition can be divided into 2 parts: structures that the hardware knows about, and structures that support the hardware but that aren’t directly used by the chip. The opcodes are an example of the first. The second is exemplified by the algorithm for handling reference count overflow. The hashing function has to be outlined only in enough detail to believe that it is viable.
It is important that this be completed as soon as possible. The detailed hardware design cannot be done until this phase is complete. This will take the talents of a Lisp wizard - BVM.
*Define opcodes, internal data structures, algorithms for handling system tasks, eg. Garbage Collection, etc. (This is in progress by AGB)
*Outline support structures - algorithms for stack, etc.
*Sketch code for support routines for stack, GC, etc.
System Verification
There is a desire to verify in detail that the choices made in the system definition phase are viable. Emulation of the system would verify the design with a great deal of confidence. It may be possible to limit this aspect to a modest effort because of fast turnaround fabrication. An emulator could be written in Lisp or in Dorado ( or DLion) microcode. A detailed emulator would allow the Lisp system modifications to start before working hardware exists.
*Instruction set emulator
*Detailed support routine coding
Software Infrastructure for Hardware creation
Software needs to be written to support the hardware design. The microcode work will have to be written in close interaction with myself (AGB).
*Microassembler
*Tamarin microcode
*Bootstrapping and tele-debugging software
Lisp system modifications
There are many changes required in the low-level Lisp system to support the changes that the Tamarin hardware entails. This list attempts to capture some of the required tasks. Many more will undoubtably be added. This work can’t be started until an emulator or working hardware exists.
*Compiler
*Type system
*Storage allocation
*Garbage collection
*Stack architecture
*CommonLisp enhancements
*Operating System
*Virtual memory support