Computer Architecture

Computer architectures deal with computer hardware configurations and how they interface with software. The two main entities of computer architecture are the CPU (central processing unit) and memory. Memory stores data and instructions in blocks or cells, and the CPU is responsible for fetching and executing instructions from memory. Memory is partitioned into a hierarchical structure such that storage size increases going down the pyramid but the access time increases going up the pyramid. There is a lot of research in operating systems and computer architecture for making access time quicker and memory cheaper.

 

 

 

 

 

 

 


6

 
Cube: Problem-Oriented Language LevelAs just described these concepts of memory and CPU are pretty basic, but whatÕs not basic are the details of how we (as programmers) communicate with a computer. As you may already know computers only understand electronic pulses, that is, on or off, hence 0 or 1. Ever since the birth of modern-day digital/programmable computers we have made significant progress into providing an interoperable means for humans and computers to effectively interact. In other words, there is essentially a mapping between user level language and binary language. This complexity is handled with a layered structure of abstractions:

 

 

 

 

 

 

 

 

 

 


Since I mostly live at the high-level (OO/C++/Java programming) environment, I wonÕt go into great detail regarding architectures. However, it is important (for us) to have a fundamental understanding of computer architectures not only to appreciate what goes on underneath the covers, but you never know when you need to potentially work at the level. For instance, IÕve had some embedded (C/Assembly) programming experience as well as other research endeavors that dove head first into primitive instruction sets, etc.

Text Box: Hence, instead of going over a particular architecture such as Intel or Sparc, I like to point out an excellent abstraction of a computer (architecture) built at Princeton University called TOY. TOY has a fully downloadable simulator (written in Java), along with a simple specification for those who simply want to get a basic grasp of computer architectures without pouring over details of real architectures. In fact, it will only take about an hour for you to start writing your own programs. 

The instruction set architecture consists of only 16 basic instructions, and with only 256 words of memory and 16 registers, the development editor allows you to look at each of the 16-bits in each of those units via a core dump. Finally, if youÕre new to architectures I would highly recommend playing around with TOY first, because it will give you a quick and clear understanding of architectures without worrying too much about details.
 

 

 

 

 

 

 


Links.

http://www.cs.princeton.edu/introcs/50machine

http://www.cs.wisc.edu/~arch/www

http://www.cs.iastate.edu/~prabhu/Tutorial/title.html

http://www.cag.lcs.mit.edu

http://www.rdrop.com/~cary/html/computer_architecture.html

http://ciips.ee.uwa.edu.au/~morris/CA406/CA_ToC.html