Lecturer: | Karen Tsarukyan |
Classes: | Once in a week |
Memory Organization. Address and Data Representations. Integers. Signed and Unsigned Numbers. 2s Complement. Floating Point Numbers. Addition and Subtraction. Multiplication. Division.
Operands of the Computer Hardware. Representing Instructions in the Computer. Instruction Set Architecture. RISC vs CISC. MIPS / x86 Assembly. Procedures and Stacks. Compiling C and Interpreting Java. Relative Costs of Instructions.
Gates, Truth Tables and Logic Equations. Combination Logic. Constructing a Basic Arithmetic Logic Unit. Clocks. Timing Methodologies. Memory Elements: Flip-Flops, Latches and Registers (SRAMs, DRAMs). Logic Design Conventions. Building a Datapath.
Array Allocation/Accesses. Nested, Multi-Level Arrays. Structures and Alignment. x86 vs platforms that enforce alignment. Structure padding in C. Demonstrating the slowdown on misaligned access on x86.
Pipelined Datapath and Control. Data Hazards. Control Hazards. Branch Prediction. Reordering due to pipelining. Compiler generated reordering for pipeline optimization.
The Basics of Caches. Measuring and Improving Cache Performance. Cache coherence. MESI protocol. Write Buffer․Memory barriers. Instruction Cache vs Data Cache. Cache profiling tools. Virtual Memory. TLB. DMA
Dependability, Reliability and Availability. Disc Storage. Flash Storage. Connecting Processors, Memory and I/O Devices. Interfacing I/O Devices to the Processor, Memory and Operating System. Performance Measures. Designing an I/O System. Parallelism and I/O.
The difficulty of creating parallel processing programs. Shared memory multiprocessors. Clusters and other message-passing multiprocessors. Hardware multithreading. SISD, MIMD, SIMD, SPMD, and Vector.