Computer architectures
& the C programming
language
Abstraction Layers
Application
Algorithm
Programming Language
Assembly Language
Operating System / Virtual Machine
Instruction Set Architecture
Microarchitecture
Digital Logic
Early Developments - 1940s
Harvard Mark 1 - 1944
Mechanical with electro-magnetically controlled relays and gears
ENIAC - 1946
Vacuum tubes
ENIAC. Source: http://www.fi.edu/learn/case-files/eckertmauchly/ENIAC_Image_2.jpg
Von Neumann Architecture 1952
General purpose machine
Bus interconnection
Flexible
Von Neumann Architecture. Source: http://last3.in/2010-11/CSE101/lectures/10-von-neumann-fig.png
Transistors - 1950s / 1960s
Cheaper
$120.000 (PDP1) vs $2M (IBM 7090)
Faster
Clock: 100ns (CDC 6600) vs 2usec (IBM 7090)
Vacuum tubes obsolete
Replica of first Transistor. Source: http://www.flickr.com/photos/revolweb/3984348493/
Integrated Circuits - 1960s
Jack Kilby and Robert Noyce
Germanium based
Silicon based
First integrated circuit. Source: http://0.tqn.com/d/inventors/1/0/t/C/1/intergratedcircuit.jpg
Instruction Set Architecture
IBM 360 - 1965
Clear distinction architecture/implementation
Same architecture with different hardware
Compatibility
CISC architecture
IBM 360. Source: http://dl.maximumpc.com/galleries/25oldpcs/ibm360_closeup1_full.jpg
Microprocessors - 1970s
Rapid progress in size and speed
Moore's law
Twice the amount of chips on the same area
Intel i432
First 32 bit processor
Moore's law. Source: http://en.wikipedia.org/w/index.php?title=File:Transistor_Count_and_Moore%27s_Law_-_2011.svg&page=1
Personal Computer - 1980s
Drop in price
Apple, Commodore
RISC architecture
Minicomputers replaced workstations
Distributed network and computing
Commodore 64. Source: http://reprog.files.wordpress.com/2010/03/800px-commodore64.jpg
Superscalar - 1990s
IBM Power 1990: first superscalar advanced microprocessor
DEC Alpha 1992: first 64 -bit (RISC)
Need larger memory addresses space
DEC Alpha. Source: http://en.wikipedia.org/wiki/File:Alpha_AXP_21064_diephoto1.jpg
Multicore - 2000s
Clock frequency cannot be further increased
Multicore processors
First Dual Core Processor: IBM Power 4. Source: http://www.fi.edu/learn/case-files/eckertmauchly/ENIAC_Image_2.jpg
Dennis Ritchie, Bell Labs 1969 - 1973
Developed as substitution of ASM (Assembly) for Unix
Based on B programming language
Assembly: Hello World
section
.text
global _start
linker (ld)
C: Hello World
#include<stdio.h>
;must be declared for
_start:
entry point
;tell linker
main()
{
printf("Hello World");
}
mov
mov
mov
mov
int
edx,len
;message length
ecx,msg
;message to write
ebx,1 ;file descriptor (stdout)
eax,4 ;system call number (sys_write)
0x80 ;call kernel
mov
int
eax,1 ;system call number (sys_exit)
0x80 ;call kernel
section
.data
msg
len
'Hello, world!',0xa
$ - msg
db
equ
;our dear string
;length of str
C Features
High-Level Language with low-level tools
Pointers Arithmetics
Structures
Functions
I\O Library
Math Library
Macros System
C Missing Features
Automatic Memory Management
Object-Oriented Programming
Functions and Operators Polymorphism
Nested Functions
Multitasking and Network (Third Party Libraries)
C System Types
short int, long int (signed/unsigned)
float, double
struct, enum, union
pointers to all data types
Thank you for your
attention
Questions are welcome
Computing Power Evolution
Evolution of SuperComputers
Sum: total computing power available in the whole world
Top: most powerful computer
#500: 500th entry of the TOP500 list (http://www.top500.org/)
Computing Power Evolution. Source:http://i.top500.org/overtime