Symbolics Technical Summary
Copyright Symbolics Inc.
Used with permission.
Symbolic Computing Overview
This chapter outlines history of symbolic computing and discusses the main features of Symbolics software and hardware. Subsequent chapters cover the individual components of the system in more detail.
Symbol Processing Computers
Symbolics manufactures high-performance symbol processing computers and associated software. Symbol processing (or symbolic processing) includes computation with symbols, relationships, and graphical objects as well as numbers, characters, and bits. Symbolic representations can more closely model a given problem as it exists in the real world. By making complex problems easier to represent, symbol processing languages enhance programmer productivity. The coupling of symbol processing software and hardware in the 1980s has considerably broadened the scope of problems that can be solved by computers.
The Symbolics 3600 family is a line of 36-bit single-user computers designed for high-productivity software development and for the execution of large symbolic programs. 3600-family processors give the user all the computational power associated with multi-user timesharing computers in a dedicated workstation. This is accomplished via a new and unique machine architecture that supports high-speed symbol processing operations directly in hardware. For example, every word in a Symbolics computer's virtual memory is tagged with data type bits - hence the name tagged architecture to describe 3600-family processors. The processor reads these bits to prevent illegal operations. As an added benefit, tag bits reduce the need for data type declarations in programs.
The Symbolics-Lisp system software constitutes a large-scale programming environment, with over a half-million lines of system code accessible to the user. Object-oriented programming techniques are used throughout the Symbolics-Lisp system to provide a reliable and extensible integrated environment without the usual division between an operating system and programming languages. All of the system software is written in Symbolics-Lisp. A high-performance implementation of Symbolics Prolog is also available, as are compilers for more conventional languages.
Outstanding documentation is a hallmark of Symbolics systems. The award-winning Document Examiner provides full access to Symbolics documentation in formatted form on the high-resolution screen of a 3600-family console. Within the Document Examiner, users can use the mouse to point at topic and object names. When they press a mouse button, the Document Examiner automatically calls up the documentation for those items.
Printed documentation is provided for users at all levels of experience. Conceptual documents present an overview of a topic, procedural guides show users how to accomplish specific tasks, and reference manuals describe the features of the system in detail. In addition, a range of training courses is offered by the Education Department of Symbolics.
Typical applications of Symbolics computers include the following areas:
- Artificial Intelligence (AI)
- Software development
- Computer-aided Design (CAD)
- Expert Systems
- Database and knowledge base servers
- Financial analysis
- Training and simulation
- Automated diagnostics
- Signal processing
- Education and training environments
- Mathematics and physics research
- Pattern recognition and image understanding
- Industrial automation
- Animation for film and video
- Communications and network control
- Very-Large-Scale-Integration (VLSI) circuit design
- Speech recognition and understanding
- Natural language understanding
History of Symbolic Computing
The economics of computer hardware and the computational demands made by modern software have converged to make personal, networked computers more attractive than timeshared systems. Foreseeing this changing situation, researchers at the M.I.T. Artificial Intelligence Laboratory initiated the Lisp Machine project in 1974. The project was aimed at developing a state-of-the-art personal computer that would support programmers developing large and complex symbolic programs. An important decision was made early in the design process: for consistency throughout the software environment, all of the system code would be written in a single language - Lisp.
The Lisp Machine concepts rests on the following tenets:
As the first stage of the project, a simulation of the Lisp Machine was written on a timeshared computer system. This enabled software development to proceed while the hardware was being debugged. Software development for Lisp Machines has been ongoing since 1975. The first-generation Lisp Machine, the CONS, was running in 1976. A second-generation Lisp Machine, called the CADR, incorporated some hardware improvements. It was introduced in 1978, replacing the CONS. (Technical note: Both the CONS and the CADR were based on microcode emulator architectures. In a microcode emulator architecture, the instruction set for support of Lisp is emulated by microcode.)
- Dedicated personal computer and console
- Fast Lisp execution
- Tagged architecture (run-time data-type checking and generic instructions)
- Virtual memory
- Integrated local area network
- Interactive, high-resolution, bit-mapped graphics
The Evolution of Symbolics, Inc.
In 1980, Symbolics, Inc., was formed with the purpose of combining past experience with the latest technology to develop a line of symbol processing computer systems and related products. Symbolics introduced the Symbolics LM-2 in 1981. The LM-2 was basically an M.I.T. CADR, repackaged for higher reliability and easier servicing. Symbolics made numerous improvements to the system software and offered options such as Fortran-77, color graphics hardware, and the LGP-1 laser graphics printer.
>From 1979 to 1982, research continued on a much more powerful and cost-effective computer architecture. This system, known as the 3600, is based on a completely new design. With the 3600 family, Symbolics has replaced the microcode emulator architecture with special hardware to support high-speed symbolic and numeric computations and to expand virtual memory to 1 Gbyte. Ethernet hardware and software support is standard on all 3600-family computers. The console has been completely redesigned to offer a larger viewing screen with built-in 16-bit digital audio operation. To correspond to the new hardware, the software development team made major enhancements to the software system. In 1982 and 1983 the menu of 3600-family options expanded to include the Symbolics Pascal Tool Kit, the MACSYMA symbolic mathematics system, and a line of high-resolution color graphics products offered by the newly-formed Symbolics Graphics Division.
The Symbolics 3670 system was introduced in early 1984, with the 3640 following later in that same year. The 3670 is the most flexible member of the 3600 family, with a wide range of memory, disk, and add-on options. 3670s are designed as high-performance program development workstations or as networked file, database, or knowledge servers. The 3640 is a compact, high-performance implementation of the 3600 architecture. Also introduced in 1984, the Floating-Point Accelerator option increases the speed of IEEE-compatible floating-point multiplications by a factor of 500%, while speeding up integer divisions by 50%. Release 6 of the Symbolics-Lisp system software included the Ephemeral-Object Garbage Collector. This proprietary system reduces paging, and is the most efficient storage management system in symbolic computing. The Document Examiner included with Release 6 won an award from the Society of Technical Documentation. The Symbolics Graphics Division introduced S-Paint, S!
-Geometry, S-Render, and S-Dynamics as part of an integrated video-compatible image-making and image-processing facility.
The 3675 and 3645 systems, introduced in 1985, are the latest hardware implementations of the 3600 architecture. The 3675 and 3645 systems incorporate the new Enhanced Performance Option - an additional processor board for instruction prefetching that increases program execution speeds by up to 50%. Symbolics expanded its menu of symbolic languages with the introduction of Symbolics Prolog, an optimizing compiler implementation with special hardware and microcode support. Symbolics Prolog established itself as one of the fastest Prolog implementations available on any computer. The Generic Bus Interface (GBI) interfaces the 36XX's high-speed L bus to slower, asynchronous devices and supports interfaces to UNIBUS and MULTIBUS standard busses. As a company, Symbolics grew in 1985 to over 650 employees with 35 sales offices in the North America, Europe, Japan, and the Middle East. By the fall of 1985, Symbolics had installed over 1500 systems at customers around the world.
This section describes the advantages of the Lisp language, specific features of Symbolics-Lisp, the Symbolics-Lisp programming environment, other languages supported by Symbolics, and the network software.
All system software for Symbolics computers is written in a dialect of the Lisp language called Symbolics-Lisp. Lisp is a computer programming language that originated as a tool for Artificial Intelligence (AI) research. AI is a branch of computer science that seeks to understand and model intelligent behavior with the aid of computers. Lisp is designed to symbolically represent objects in the world and the relationships that exist among them.
"Lisp" stands for "List Processing Language" as it was dubbed by Professor John McCarthy of M.I.T. (now at Stanford University). At the lowest level all objects in Lisp are represented as lists, even the expressions in the Lisp language. This uniformity of representation has proven to be a tremendous advantage of Lisp over other languages. It makes Lisp easy to extend, which accounts for the longevity of the language and the tremendous range of applications written with it.
At this time, most major artificial intelligence systems are written in Lisp, including programs for expert problem-solving, common-sense reasoning, learning, natural language processing, education, speech, intelligent signal processing, and vision. Lisp has many features that make it useful for symbol processing.
In recent years, highly efficient compilers and symbol processing hardware have dispelled the earlier notion of Lisp as a slow language. Optimized code generators for Lisp have made it useful as a systems programming and implementation language.
- Lisp is easy to learn; the parenthesis notation makes Lisp syntax uniform.
- Lisp is interactive.
- Lisp functions and data have the same form; programs can generate other programs and then pass control to them.
- Lisp excels in representing arbitrary-sized objects in which the number of details or properties cannot be predicted (declared) in advance.
- The Lisp environment provides powerful editing and debugging tools.
- Lisp is extensible.
Symbolics-Lisp is a Lisp system developed specifically for Symbolics computers. All of the system code is processed by the Symbolics-Lisp compiler. Applications in symbolic mathematics (MACSYMA), document processing, and computer aided design have also been developed exclusively in Symbolics-Lisp.
Symbolics-Lisp evolved originally from the Maclisp dialect developed in the 1970s. It is somewhat compatible with Maclisp, while introducing many new features and improvements. These include:
The Flavor System offers the following advantages:
- A full range of data types, including many numerical types, lists, strings, arrays, planes, and user-defined structures.
- Modern control constructs, including a very general loop iteration facility, asynchronous nonlocal exists, coroutines, and processes.
- Flexible function calling and multiple-value returns.
- Stream-oriented input and output.
- The Flavor system for object-oriented programming with message passing.
- Macros for extending the Symbolics-Lisp syntax.
- Predefined functions that support such operations as sorting, hash tables, linear equations, and matrix operations.
- Multiple namespaces (packages).
In the past two years, the Common Lisp standard has unified the Lisp community around a compatible dialect. Symbolics has been a prime supporter and an active participant in the Common Lisp movement. The committee to define Common Lisp included nine members of Symbolics' technical staff.
- Object-oriented programming permits more modularity in programs by encapsulating procedures and data into a flavor object
- New flavor types can be cloned by combining existing flavor types
- Flavor inheritance is non-hierarchical
In keeping with the trend toward Common Lisp, the Zetalisp dialect of Lisp, in which much of Symbolics system software is written, has been modified to make it more compatible with Common Lisp. For example, both the interpreter and the compiler use lexical scoping of variables and can process Common Lisp as well as Zetalisp code.
In a future release, all Symbolics software will be coded in Symbolics Common Lisp (SCL). SCL is a superset of the Common Lisp standard with many extensions for the Symbolics environment, including the Flavor system.
Note: In the rest of this document , "Symbolics Lisp" and "Lisp" are used synonymously.
The Symbolics-Lisp Environment
On Symbolics computers the traditional distinction between an operating system and a programming language is blurred. Symbolics-Lisp is a language, but it is also the environment for the development and execution of programs in other languages. By integrating the Lisp language with features commonly associated with operating systems, Symbolics-Lisp provides a unified environment for systems programming, applications development, and execution of existing programs.
Developers find that Symbolics-Lisp provides an extensive interactive programming environment. Over a half-million lines of code are provided with the basic system. Much of this code is available in the form of sources. This includes over 10,000 compiled functions to which users have full access.
The basic software incorporates the following components:
- Flavor-based window system
- Flavor-based choice facilities, including many types of menus
- Highly-developed electronic mail system
- A real-time text editor with advanced features, including interpretation and compilation of source code within the editor and support for multiple text fonts
- Incremental compilers
- Dynamic loading and linking
- Ephemeral-object garbage collector (reduces paging)
- A flexible display-oriented debugging system
- Flavor-based condition system for error-handling
- 36XX-to-36XX network communications, with DECnet and TCP/IP support optional
- Document Examiner online
Support for symbolic computing goes beyond the Symbolics-Lisp language. Symbolics continues to broaden the spectrum of programming languages available to the developer.
Logic programming, and the Prolog language in particular, is acknowledged to be an important tool in artificial intelligence programming and expert system development. Symbolics Prolog is a high-performance optimizing compiler implementation with hardware and microcode support. With the addition of Prolog to the Symbolics product line, the 3600-family is a Prolog Machine as well as a Lisp machine.
Prolog programs written according to the DECSystem-10 Prolog standard will run on Symbolics machines without modifications. A Lisp-like syntax for Prolog is also available. In addition, Symbolics Prolog provides full access to the Symbolics-Lisp environment. Prolog programs can manipulate Lisp objects and invoke Lisp functions. Similarly, Lisp programs can manipulate logic variables and invoke Prolog queries.
The Symbolics FORTRAN Took Kit supports the full FORTRAN 77 language. Extensions to the Zmacs text editor support the editing of FORTRAN programs. The FORTRAN editor mode understands the boundaries of FORTRAN routines. Debugging is done at the source code level.
The Symbolics Pascal Tool Kit offers full support for ISO Standard Pascal (including conformant arrays). The Tool Kit also supports most features of Pascal/VS, the IBM dialect. The Tool Kit has a number of features for high-productivity, including: syntax-directed editing supported by templates, special Pascal editor mode (keywords and comments are automatically shown in boldface on the screen), incremental compilation of individual procedures in the editor, and source level debugging.
MACSYMA for the 3600 is a large, highly sophisticated software system for symbolic mathematical manipulation. The system handles symbolic mathematical expressions, following the rules of algebra and calculus, and produces symbolic closed-form solutions. MACSYMA server as an expert mathematics assistant to applied mathematicians, scientists, engineers, and educators. On the 3600, users can take advantage of the fast, high-resolution display to generate detailed visual graphs of symbolic functions.
The Symbolics Network System enables 3600-family computers to share resources and exchange data with each other and with computers, devices, and communication networks.
Local area networks facilitate the sharing of programs, data file, and network resources. Users realize the best of two worlds:
As few as two or as many as one hundred Symbolics computers can be coordinated on a single Ethernet network.
- The benefit of timesharing. -
Intercommunication among users, shared access to files, use of high-quality input and output devices.
- The advantages of single-user stations. -
Fast response, dedicated processor and memory resources, customizable environment, protection from crashes, and greater availability.
Connected networks can be set up by attaching gateways to an Ethernet, which attach it to different Ethernets or large-scale computer networks. Network commands are generic; that is, the type of low-level network protocol used is transparent to the user. For example, files are accessed on any machine in the network, just as they would be on a local machine.
Here are some of Symbolics network software features:
The Namespace System is a database containing information about the network and a database editor for updating that information. The database stores information that tells network software what protocol and syntax should be used to access any computer, device, or gateway on the network. This powerful feature lets users invoke many operations across the network using the same command, regardless of protocol, device, or computer being accessed.
- Industry-standard Ethernet support
- Support of many protocols over one physical Ethernet
- Supported protocols include Chaosnet (for connection to Symbolics machines and DEC VAX computers running 4.2BSD UNIX), DECnet (for connection to DEC VAX computers running VAX/VMS) and TCP/IP (supported by many computers and used in the Arpanet)
- Standard system commands regardless of the low-level protocol
- Standard network services include: remote login, file access, mail, and remote device access
- Namespace System (a network database and interactive database editor)
- Generic Network Services implementation for simplified software protocol extensions and additions
Through the use of Generic Network Services, it is easy to define and implement new services , or create your own protocols and services. The only requirement is that the software protocol operate over Ethernet or telephone lines.
Network communications are enhanced by applications packages written for the Symbolics-Lisp environment. These include a sophisticated electronic mail utility (Zmail), a real-time interactive message system (Converse), and generic file-system access and network services.
Symbolics Dialnet permits direct connection between Symbolics computers over standard telephone lines. It also can act as a gateway between local networks at different sites. Some user services previously available only on computer linked by local area networks can be provided between computers on different local networks using Symbolics Dialnet.
This section outlines the features of the Symbolics 3600-family processor architecture, network design, and peripherals.
The Symbolics 3600 Family
The Symbolics 3600-family hardware was designed to provide the user with the power of mainframe computing in a compact, single-user package. This is made possible by:
- Dedicated 36-bit processor (32 bits data, 4 bits tag) with run-time data-type checking, providing full 32-bit integers and IEEE-compatible floating-point formats
- 44-bit memory words with automatic detection of double-bit errors and both detection and correction of single-bit errors
- A 1.024 Gbyte demand-paged virtual memory with packaging for more than 30 Mbytes of semiconductor memory
- Interactive high-resolution (1150 x 900 pixels) display
- Console processor based on dedicated microprocessor for handling keyboard and mouse input
- Innovative keyboard design and standard mouse pointing device
- Built-in digital audio output subsystem
- MC68000-based front-end processor (FEP)
- Dedicated Winchester disk (standard), or optional removable disks, with capacities from 140 Mbytes to 474 Mbytes per drive
- 10-Mbit/sec Ethernet transceiver and interface with TCP/IP and DECnet support optional
- Four serial input/output lines (both high- and low-speed), including one on the console
- Generic Bus Interface with UNIBUS and MULTIBUS interfaces
- Optional high-resolution Color Graphics System and frame buffers (up to 1280 x 1024, up to 24 bits per pixel)
The 3600-family Processor
The 3600-family processor was designed along wit the software, yielding an unusually close coupling between the processor and the Symbolics-Lisp system software. High-performance features of the 3600-family processor include the following:
- 36-bit internal data paths (32 bits data, 4 bits tag) with full 32-bit integers
- Tagged architecture: run-time data-type checking with no overhead
- Stack-oriented architecture, with large stack buffers (the top of the stack is always kept in a special high-speed memory) and caches for virtual memory and garbage collection operations
- Stack pointers in hardware
- Execution of most simple Lisp instructions in one machine cycle (180 to 250 nanoseconds variable), rather than the two or three cycle instructions of other Lisp Machines
- Microtasking operation (many Ethernet and disk controller functions are performed in multiplexed processor microcycles)
- Hardware-assisted Ephemeral-Object Garbage Collection for memory efficiency
- IEEE-standard floating-point operations
- Unconsed representaton of single-precision floating-point numbers
- Hardware support for these features:
- Data type checking and parallel type checking
- CDR coding for compact list representation
- Byte field inserting and extracting executed in one microcycle
- Efficient instruction dispatching (no microcode branching)
- Fast function calling, including argument passing and stack frame allocation
- Concurrent operations in hardware for high speed:
- Run-time data type checking
- Instruction fetch
- Instruction decode
- Instruction execution
- Result data type checking
- Garbage collection support
- Floating Point Accelerator option (greatly increases the speed of floating point numerical operations)
- Enhanced Performance Option (provides instruction prefetch unit, 2K instruction cache, and additional microcode)
Symbolics computer systems can be configured with a number of Symbolics peripherals, including:
Software support for peripherals ranges from printing software to elaborate color graphics systems with full color rendering and animation.
- TC4 45 Mbyte cartridge tape for cost-effective backup
- TD8 industry-standard half-inch tape drive (up to 80 Mbytes capacity)
- Additional Winchester or removable disks
- Gbus interface with UNIBUS or MULTIBUS card
- Symbolics LGP2 Laser Graphics Printer
- Symbolics DMP1 Dot-Matrix Printer
- MOD2 1200/2400 bps synchronous/asynchronous modem
- Extra length cables
- Color Graphics System Hardware, including:
- 8-bit or 24-bit high-resolution frame buffers
- 32-bit broadcast resolution frame buffer
- CAD buffer
- Digitizing frame grabber
- Genlock option (for synchronization to video)
- Color monitors (standard, premium, NTSC-resolution, and CAD buffer monitors)
- Graphics tablet
- NTSC encoders and decoders
User Interface Hardware
Users interact with Symbolics computers through its user interface -- a combination of software and hardware that determines how information is presented to the user.
The user interface of Symbolics computers is based on software that interacts with several hardware components:
The goals of the Symbolics user interface software design include:
- A large alphanumeric keyboard with 88 keys, including many special function keys.
- A high-resolution (1100 by 900) bit-mapped graphics display screen.
- The mouse, a hand-held graphical pointing device that rolls on the desk surface next to the alphanumeric keyboard. Moving the mouse on the desk causes an arrow (cursor) to move on the display screen. The mouse has three buttons which can be clicked (pressed) to invoke choices in various contexts.
- The digital audio output systems.
- Color Graphics System monitors (optional)
User interface hardware is supported by Symbolics software, including these integral parts of the Symbolics-Lisp environment:
- Clarity of presentation and interaction
- Consistency of interaction protocols throughout the system
- Ready access to help and information facilities
- Window and menu-oriented graphics
- "Modeless" context-switching (no need to kill one program to use another)
- Consistent entering and exiting of programs
- Dynamic mouse documentation (changes depending on context)
- Dynamic help and information facilities
- Document Examiner for immediate access to formatted documentation