Introduction
Computer science and technology is rapidly evolving due to the emerging applications and the ever-improving software and hardware that eradicate the old bottlenecks. Compared to the recent years, technological improvements together with innovations in computer architecture have led to the growth of CPU performance. Also, microprocessor-based machines have been advancing at a high rate of between twenty-five to thirty-five per cent. Today, a majority of people can purchase computers with high performance, more main memory and disk storage at a reduced price compared to the old times when computers were so much expensive yet less efficient (Davis, 1977). The micro-computers of today are therefore considered of high efficiency than the supercomputers that existed less than ten years ago. The rapid improvements have been contributed by innovations in computer designs and technologies used to build the computers.
Technological trends
Pipelining
In the early 1980’s, pipelining was only used by supercomputers and mainframes. Time has passed and now pipelining can be used by all computers. Pipelining works by improving a machine’s throughput without altering the basic time cycle. Pipelining is therefore important in cases where the available gate count grows faster than the gate speed. Improvements in gate speed can be incorporated independently into changes in cycle time. During the periods when machines had little or no pipelining, the average cycles per instructions were five to ten. Several advancements have taken place such as RISC machines achieving CPI values that are close to one for integer codes hence representing an ideal value. Pipelining has increased performance by making use of instruction-level parallelism that becomes effective when instructions in a sequence are not independent (Tlili, Essalmi & Jemni, 2016). To achieve more performance with the ideal pipeline, the pipeline could be made deeper by superpipelining or issuance of more than one instruction per clock (superscalar). Each of the above modifications could achieve higher performances. Superpipelined and superscalar machines of same degrees achieve same performances as they are essentially duals. The parallelisms used deeper pipelines are normally the same as those used in issuing multiple instructions.
RISC
Another form of innovation in computer design has been the RISC pipelined processors. In the 1980’s it was apparent that inefficiency in the performance of the processors and difficulty of designing processors were the major contributing factors to computer architectural complications. The main approach used to eradicate the performance inefficiency was RISC architecture. The designers of RISC focused on techniques such as the use of cache and exploitation of instruction level parallelism. The main objective of RISC is to ease the implementation and compatibility of highly optimized compilers putting emphasis on concepts like advanced pipelining. Another goal of RISC was to attain a higher code density (Tlili, Essalmi & Jemni, 2016). The results were powerful addressing modes, efficient instruction encodings and more powerful instructions. The new designs of RISC processor allow tight integrations with multitude architectures hence making them more powerful.
Memory systems (caches memory and virtual memory)
With the increasing integration levels, memory, on the other hand, has become less expensive hence having diverse effects on the designs of a computer. Designers have sort for ways to trade-off memory for speed and reduced complexity in design. RISC is an example of a concept that uses more memory compared to CISC architectures (Davis, 1977). The result is higher speed and a reduction of complexity in design. The improvements in technology and innovations affected not only the DRAMS but also the SRAM thus lowering the costs of caches. Caches are one of the fundamental architectural ideas as they significantly enhance performance by use of memory. The gap between processor cycles and DRAM is the motivating factor for caches. Caches were used as early as 1980’s in both minicomputers and large computers. In the recent decades, support for caches has been included in all microprocessors (Tlili, Essalmi & Jemni, 2016). Even though large caches improve performances, cache design problem is among technologically driven compromises. The existing compromises have optimal values that majorly depend on the design details. Cache memory reduces the time used in accessing memory thus enabling the system to retrieve data faster. The result is higher processing powers and quicker responses from system applications.
Early virtual memory computers ran all programs in non-privileged mode and performed all operations interpretively through multiple paging techniques. The virtual memory could only be implemented on paged computers that had the ability to trap instructions that query the processor state. One of the approaches that were used to eliminate the problems of virtual memory architectures was by eliminating the entire state. In 1959, the first virtual memory machine was developed, and it was known as the one level storage system (Mitchell, 2001). Some of the concepts that make virtual memory work include the physical memory that is divided into pages, a swap device, address translation and management software in the operating system. Recently, caches used virtual memory to address physical translations. Also, the caches used address translation to access virtual memory.
The evolution and advancements in virtual memory have made it easier for computers to handle the large and complex applications. Virtual memory also allows the system to use the hard drive as an additional memory hence enabling those systems with less memory run faster due to the increased memory space. However, the virtual memory operating system has less performance compared to similar application that has more space for memory. Despite the above shortcoming, virtual memory has numerous benefits. Future advancements that can be used to improve the virtual memory of computers are by looking for system resources that heavily impact use of the memory subsystem (Davis, 1977).
Conclusion
Continuation of the tremendous increase in the performance of computers as seen over the past years requires that technology is improved as well as the development of new ideas in computer architecture. Despite the numerous opportunities to advance computer technologies, there are several challenges too. The two most significant challenges include the development of new base technologies with great performances and the continuing increase integration at historic rates. Most of the changes in computer technology are evolutionary. An example is how primary technology has been used to design microprocessors evolving from PMOS, NMOS then lastly CMOS (Mitchell, 2001).
Out of all the concepts outlined such as RISC, pipelining, cache memory and virtual memory the most important one according to me is cache memory. A processor needs memory for storage of data and instructions. The flow of data and instructions needs to be kept up to the speed of the processor as everything has to be there in time. The cache is a fast memory and therefore sits next to the processor area. Instructions are normally preloaded into the cache from the main memory. The cache may however not be necessary for a slower system. There are three different types of cache memory L1, L2 and L3 that ensure the system is efficient for use. Just like the RAM, cache is superfast, and the more of it, the better as the computer does not have to wait for information.