Computer science is all about providing abstractions and their efficient implementation. An abstraction provides a logical view of a certain service or a resource by giving a well-defined black-box model, its associated properties and hides the internal details of the black-box. For example, the design and implementation of a processor are abstracted away through the Instruction Set Architecture (ISA) of the processor. Further high-level programming languages like C, C++ abstract away the ISA of a processor by allowing the programmers to express their intent using language constructs like for-loops, while-loops, etc. Wherever we use abstractions we have to rely on someone for efficient realization of those abstractions. In the case of ISA of a processor, we rely on the processor designer, and in the case of high-level programming languages, we rely on a compiler.
In this lab, the first two experiments deal with the two primitive data abstractions, integers, and floating-point numbers. We look at various approaches for representing integers and floating-point numbers in binary and, their pros and cons. The next four experiments involve writing assembly language programs using MIPS and ARM ISA. In these experiments, we learn how to map high-level language constructs to a sequence of assembly language instructions. In the last experiment of this lab, we shall study how to design a processor for a subset of MIPS ISA using the Single Cycle Per Instruction approach. The idea here is that we would like to understand how we can map high-level language constructs to assembly programs, followed by that how to realize the assembly instructions using logic gates as building blocks.
Processor, Memory, and I/O Devices are three major subsystems in a computer. Cache memory plays a major role in bridging the speed mismatch between a processor and the associated main memory module. We have three experiments on cache memories to illustrate various possible cache organizations and the impact of cache organizations on program performance. We have one more experiment illustrating the concept of Virtual Memory.
The simulations of this lab have some of the following software dependencies -
Browsers - Firefox 50 and lower versions, Internet Explorer Software - Adobe Flash Plugin, Java1.7, Java3D-1.5.2, and IcedTea Plugin.
We recommend you to use our customized Virtual Box for the smooth running of these simulations.
Install VirtualBox - Virtual Labs offers a free download of a customized VirtualBox with the required pre-installed software dependencies (Java 1.7, Java3D-1.5.2, IcedTea Plugin, and Adobe Flash Plugin). Please follow the link to download, install VirtualBox for easy use of Virtual Labs.