MikroSim

Last updated
MikroSim
MikroSim2010 Icon.jpg
Screenshot MikroSim2010.png
Screenshot of MikroSim 2010
Original author(s) Dr. Martin Perner of 0/1-SimWare
Initial release1992, 2930 years ago
Stable release
3.0.13 / June 20, 2012;9 years ago (2012-06-20)
Written in Visual Basic
Operating system Microsoft Windows
Available in English, German
Type Computer simulation, Computer architecture
License Freeware, Shareware
Website www.mikrocodesimulator.de

MikroSim is an educational software computer program for hardware-non-specific explanation of the general functioning and behaviour of a virtual processor, running on the Microsoft Windows operating system. Devices like miniaturized calculators, microcontroller, microprocessors, and computer can be explained on custom-developed instruction code on a register transfer level controlled by sequences of micro instructions (microcode). Based on this it is possible to develop an instruction set to control a virtual application board at higher level of abstraction.

Contents

General

Initially MikroSim was developed to be a processor simulation software to be widely available in educational areas. Since MikroSim operability starts on the basis of microcode development, defined as a sequence of micro instructions (microcoding) for a virtual control unit, the software's intention is on first approach a microcode simulator with various levels of abstractions including the ability of CPU simulators and instruction set emulators. In the current software revision it is feasible for a microcode controlled virtual application to operate on own coded instruction sets. With MikroSim typical and well-known concepts in the area of computer engineering like computer architecture and instruction set architecture are non-specifically treated, which have been established since the early days of the information era and being still valid. In this fashion the simulation software gains a timeless, free didactical benefit without being restricted on special developments of the past and in the future. The detailed documentation and the bilingual application's graphical user interface (GUI) in German and English, as well as the software's upward compatibility given to some extent by Microsoft's operating system Windows, are reasons for being a well-established, valuable e-learning tool in the field of computer engineering since 1992 for educational use.

History of development

The software is based on a version written under Turbo Pascal compiled for MS-DOS operating systems which has been used for educational purposes in computer engineering and computer science at the Philipps-University Marburg (Germany) until 1992. The concept was picked up by Martin Perner during his study of physics (1990–95) in summer 1992, revised, and converted into a windows application compiled with Microsoft Visual Basic and running on Windows 3.1x. In doing so, at this time a simulator with huge conceptual improvements arose by exploiting the novel functionality and utilisation of MS Windows’ GUI for supporting the composition of microcode and the traceability of its instructional influence. The enhancements of the e-learning tool under Windows has been supported and promoted by the Fachbereich Mathematik/Informatik of the University of Marburg by Heinz-Peter Gumm until end 1995.

The Simulator has been awarded with the ‘’European Academic Software Award 1994’’ in the computer science category in Heidelberg (Germany) in November 1994. In March 1995 the simulator was presented at the computer exhibition CeBIT’95 in Hannover at the exhibit of the ‘’Hessischen Hochschulen’’. Between 1995 and 2000 the simulator was published as ‘’Mikrocodesimulator MikroSim 1.2’’ without any significant improvements. At this time the tool received an award of 1000 ECU from the European Union in conjunction with the ‘’European Year of Livelong Learning 1996’’. In 1997, the software was presented at the contest ‘’Multimedia Transfer’97’’ in connection to the exhibition ‘’LearnTec’97’’. [1] In its penultimate revision, the simulator has been published under ‘’Mikrocodesimulator MikroSim2000’’, optimized for MS Windows 95’s 32-bit operation.

Between 2008 and 2009, the simulator concept has been revised, reworked, and thoughtful extended. So it has received wide-ranging improvements and extensions without touching the successful conceptual aspects of the microcode simulation abilities in the core. For this purpose, advantage is taken of today’s computing system’s performance determined by operating system and underlying computational power to extend MikroSim’s simulation possibilities up to the stage of a virtual application board. MikroSim is compiled and optimized for sake of unrestricted compatibility and for widest distribution possible for MS Windows XP as a 32-bit version. The program runs on all 32- and 64-bit operating systems of MS Windows Vista and MS Windows 7. Thereby, no special XP compatibility mode is needed. Since January 2010, the simulator is distributed as ‘’Mikrocodesimulator MikroSim 2010’’ by 0/1-SimWare.

Functionality

The windows application allows for the gradual establishment of a virtual application that is predetermined and such unchangeable in its functionality.

In exploration mode, the operating principle and control of newly added components influenced by one microcode instruction within a cycle can be evaluated. The width of MikroSim’s micro instructions is 49 bits. A single micro instruction is executed in three phases of a 3-phase clock. The partial phases are referred to as “GET”, “CALCULATE” and “PUT” phase, causing to fetch some register value, to execute a 32-bit calculation, and to store the calculation result into a CPU's internal register, finally.

In simulation mode, seamlessly executed micro instructions control the central processing unit of the simulator in subsequent cycles. Therefore, the intrinsic ability of one micro instruction is utilized to address the next micro instruction in the control store. The control store holding the micro instruction set (commonly referred as "microcode") comprises 1024 micro instructions words each 49-bit wide.

Using structuring opportunities of the control store for addressable scheduling of the microcode and the implementation of a cyclically operating machine code interpreter, that is programmed in microcode as well allows the implementation of individual micro-operation sequences, known as machine instructions. The microcode can be regarded as firmware for MikroSim, that can be modified, and stored in and reloaded from a microcode-ROM-file.

Within a micro instruction execution cycle, the CPU as well as an input / output controller is connected to an external 16 kByte huge random access memory device (RAM). Via the input-output controller device, communication with virtual input and output devices is supported by Direct Memory Access mode (DMA), Inter-Integrated Circuit Connection (I2C), and Interrupt request functionality (IRQ). A output port, a display, a timer, an event trigger, a digital-analog converter, a keyboard and data input / output channel is provided as virtual IC device for explaining didactically the communication with external devices.

The microcode simulator uses eight freely usable register each 32-bit wide connected with a 32-bit arithmetic logic unit (ALU). The register content can be regarded as signed or unsigned integer values, or as 32-bit floating point numbers. The register content can be easily viewed, interpreted, and modified bitwise an integrated system number editor.

The 32-bit ALU is the key unit of the central processing unit. It supports 128 different basic arithmetic operations for integer operation, interrupt control, and for floating point arithmetic.

The didactical approach to floating point calculations, which has been introduced in a comparable manner already in the early 1940s by Konrad Zuse, is introduced by using elemental sublevel operations for exponent and mantissa involved in the key operations of addition/subtraction and multiplication/division. A set of powerful 32-bit floating point arithmetic commands in mantissa and exponent for the basic operations and elementary analytical functions are provided, as they are realized in today's mathematical coprocessors. Here, in the simulation with MikroSim it is ideally assumed that the execution of each supported ALU arithmetic operation requires only a distinct computing duration independent of circuit complexity realistically needed in practice.

The execution of micro instructions can be operated on various simulation levels with different temporal resolution:

With various additional options, visual CPU activities can be suppressed for the benefit of increasing the processing speed when the control of the application by machine programming is put forward. The performance index monitor provided with the simulator enables the user to benchmark the processing performance of MikroSim and setting it into relation with computing power of the simulator's hardware, measurable in floating-point operations per second (FLOPS) and instructions per second (IPS).

With the so-called ’’Basic Assembler Tool for MikroSim’’ MikroBAT, simple programs can be developed in assembler programming language. Here, all supported mnemonics of the assembler programming language are determined by the user's self-created machine's instruction set on micro instruction level. The add-on tool is able to translate the assembly language program into machine code and data and transferring the binary code into the external RAM for subsequent simulations. Together with MikroBAT the microcode simulator MikroSim supports the didactical introduction of teaching aspects in technical computer science from a switch-controlled calculating machine to an assembler programmable application.

See also

Literature

Related Research Articles

Central processing unit Central computer component which executes instructions

A central processing unit (CPU), also called a central processor, main processor or just processor, is the electronic circuitry that executes instructions comprising a computer program. The CPU performs basic arithmetic, logic, controlling, and input/output (I/O) operations specified by the instructions in the program. This contrasts with external components such as main memory and I/O circuitry, and specialized processors such as graphics processing units (GPUs).

The control unit (CU) is a component of a computer's central processing unit (CPU) that directs the operation of the processor. A CU typically uses a binary decoder to convert coded instructions into timing and control signals that direct the operation of the other units.

In processor design, microcode is a technique that interposes a layer of computer organization between the central processing unit (CPU) hardware and the programmer-visible instruction set architecture of a computer. Microcode is a layer of hardware-level instructions that implement higher-level machine code instructions or internal finite-state machine sequencing in many digital processing elements. Microcode is used in general-purpose central processing units, although in current desktop CPUs, it is only a fallback path for cases that the faster hardwired control unit cannot handle.

A microassembler is a computer program that helps prepare a microprogram, called firmware, to control the low level operation of a computer in much the same way an assembler helps prepare higher level code for a processor. The difference is that the microprogram is usually only developed by the processor manufacturer and works intimately with the computer hardware. On a microprogrammed computer the microprogram implements the operations of the instruction set in which any normal program is written. The use of a microprogram allows the manufacturer to fix certain mistakes, including working around hardware design errors, without modifying the hardware. Another means of employing microassembler-generated microprograms is in allowing the same hardware to run different instruction sets. After it is assembled, the microprogram is then loaded to a control store to become part of the logic of a CPU's control unit.

MIPS is a reduced instruction set computer (RISC) instruction set architecture (ISA) developed by MIPS Computer Systems, now MIPS Technologies, based in the United States.

Machine code Set of instructions executed directly by a computers central processing unit (CPU)

In computer programming, machine code is any low-level programming language, consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). Each instruction causes the CPU to perform a very specific task, such as a load, a store, a jump, or an arithmetic logic unit (ALU) operation on one or more units of data in the CPU's registers or memory.

MMIX is a 64-bit reduced instruction set computing (RISC) architecture designed by Donald Knuth, with significant contributions by John L. Hennessy and Richard L. Sites. Knuth has said that,

MMIX is a computer intended to illustrate machine-level aspects of programming. In my books The Art of Computer Programming, it replaces MIX, the 1960s-style machine that formerly played such a role… I strove to design MMIX so that its machine language would be simple, elegant, and easy to learn. At the same time I was careful to include all of the complexities needed to achieve high performance in practice, so that MMIX could in principle be built and even perhaps be competitive with some of the fastest general-purpose computers in the marketplace."

PDP-8 First commercially successful minicomputer

The PDP-8 is a 12-bit minicomputer that was produced by Digital Equipment Corporation (DEC). It was the first commercially successful minicomputer, with over 50,000 units being sold over the model's lifetime. Its basic design follows the pioneering LINC but has a smaller instruction set, which is an expanded version of the PDP-5 instruction set. Similar machines from DEC are the PDP-12 which is a modernized version of the PDP-8 and LINC concepts, and the PDP-14 industrial controller system.

In computer science, an instruction set architecture (ISA), also called computer architecture, is an abstract model of a computer. A device that executes instructions described by that ISA, such as a central processing unit (CPU), is called an implementation.

Very long instruction word (VLIW) refers to instruction set architectures designed to exploit instruction level parallelism (ILP). Whereas conventional central processing units mostly allow programs to specify instructions to execute in sequence only, a VLIW processor allows programs to explicitly specify instructions to execute in parallel. This design is intended to allow higher performance without the complexity inherent in some other designs.

ARM is a family of reduced instruction set computer (RISC) architectures for computer processors, configured for various environments. Arm Ltd. develops the architecture and licenses it to other companies, who design their own products that implement one or more of those architectures, including system on a chip (SoC) and system on module (SoM) designs, that incorporate different components such as memory, interfaces, and radios. It also designs cores that implement these instruction set architectures and licenses these designs to many companies that incorporate those core designs into their own products.

An instruction set simulator (ISS) is a simulation model, usually coded in a high-level programming language, which mimics the behavior of a mainframe or microprocessor by "reading" instructions and maintaining internal variables which represent the processor's registers.

Protection ring Layer of protection in computer systems

In computer science, hierarchical protection domains, often called protection rings, are mechanisms to protect data and functionality from faults and malicious behavior.

The Orion was a series of 32-bit super-minicomputers designed and produced in the 1980s by High Level Hardware Limited (HLH), a company based in Oxford, UK. The company produced four versions of the machine:

AMD Am2900

Am2900 is a family of integrated circuits (ICs) created in 1975 by Advanced Micro Devices (AMD). They were constructed with bipolar devices, in a bit-slice topology, and were designed to be used as modular components each representing a different aspect of a computer control unit (CCU). By using the bit slicing technique, the Am2900 family was able to implement a CCU with data, addresses, and instructions to be any multiple of 4 bits by multiplying the number of ICs. One major problem with this modular technique was that it required a larger number of ICs to implement what could be done on a single CPU IC. The Am2901 chip was the arithmetic-logic unit (ALU), and the "core" of the series. It could count using 4 bits and implement binary operations as well as various bit-shifting operations.

Micro-operation

In computer central processing units, micro-operations are detailed low-level instructions used in some designs to implement complex machine instructions.

A computer architecture simulator is a program that simulates the execution of computer architecture.

History of general-purpose CPUs History of processors used in general purpose computers

The history of general-purpose CPUs is a continuation of the earlier history of computing hardware.

Emulator Hardware or software that enables one computer system to behave like another computer system

In computing, an emulator is hardware or software that enables one computer system to behave like another computer system. An emulator typically enables the host system to run software or use peripheral devices designed for the guest system. Emulation refers to the ability of a computer program in an electronic device to emulate another program or device.

CPU Sim is a software development environment for the simulation of simple computers. It was developed by Dale Skrien to help students understand computer architectures. With this application the user is able to simulate new or existing simple CPUs. Users can create new virtual CPUs with custom machine language instructions, which are implemented by a sequence of micro instructions. CPU Sim allows the user to edit and run assembly language programs for the CPU being simulated.

References

  1. Mikrocodesimulator – Awards and Honours, DE: MikroSim, retrieved 5 December 2010.