COURSE GOALS: The main course goals are to acquaint the students with the structure, modes of working of modern computers, and the principles of programming in assembly language.
Special attention is given to the topics that are related to the functional units (control unit, arithmetic-logic unit, memory, I / O unit) and understanding of their work. Students get familiar with the concepts such as pipelining, virtual memory, exceptions, multi-core processors, processor performance and ways of expressing and measurement of processor performance.
LEARNING OUTCOMES AT THE LEVEL OF THE PROGRAMME:
1. KNOWLEDGE AND UNDERSTANDING
1.3. demonstrate a thorough knowledge and understanding of basic concepts in techniques;
1.4. demonstrate a thorough knowledge and understanding of basic concepts in information and communication technology
2. APPLYING KNOWLEDGE AND UNDERSTANDING
2.2. identify and describe important aspects of techniques and their applications
2.3. recognize and follow the logic of arguments, evaluate the adequacy of arguments and construct well supported arguments
2.6. use information and communication technology efficiently (to foster active enquiry, collaboration and interaction in the classroom)
3. MAKING JUDGMENTS
3.2.develop clear and measurable learning outcomes and objectives in teaching based on curriculum goals;
4. COMMUNICATION SKILLS
4.1.communicate effectively with pupils and colleagues;
4.2.present complex ideas clearly and concisely
5. LEARNING SKILLS
5.1.search for and use professional literature as well as any other sources of relevant information;
LEARNING OUTCOMES SPECIFIC FOR THE COURSE:
Upon successful completion of the course, the student is able to:
1. Understand and distinguish the functions of major components of a computer including processor (control unit and ALU), memory, I/O units and buses;
2. Predict activity on the bus of a simple processor, as a consequence of execution of short machine code sequences (snippets);
3. Understand the design principles of RISC and CISC architectures;
4. Understand and distinguish the measures for evaluation of performance processors / computers;
5. Understand memory hierarchy and illustrate stages of physical address generation in presence of cache and virtual memory;
6. Cope in details different U/I techniques (programmed I/O, interrupt I/O and DMA);
Introduction. Trends in VLSI technology, computer architecture, and processor performance. Roles of major components in the Von Neumann's computer model including CPU, memory, buses and I/O devices.
Computer architecture classifications with respect to parallelism (Flynn), control flow (instruction, data), and instruction sets (CISC, RISC, VLIW).
Simplified model of the CISC processor organization. Tracking the memory and external bus activities during the execution of short machine code snippets.
Architecture and program model (IS-A) of the RISC processor.
Computer performance: introduction of the parameter CPI, SPEC benchmark collections.
Programming in assembly language.
Control unit - Implementation of hardware and microprogrammed control unit. Hardware/software interface: stacks, recursive programs, and exceptions.
ALU - Basic arithmetical and logical operations. Fixed-point arithmetic. Floating-point arithmetic.
Memory hierarchy. Approaches for improving the bandwidth of the main storage. Cache organization: direct-mapped, fully associative and set-associative. Replacement algorithms. Cache coherency.
Virtual memory system. Physical and logical address spaces. Address mapping by paging and segmentation. TLB-s and multi level page tables. Replacement policies. Case studies.
The concept of pipelined data processing. Pipeline hazards: structural, data, and control. Organization of a pipelined RISC processor.
Forms and levels of parallelism. Parallel architectures. Multiprocessor SIMD computers. Vector processors.
Multiprocessor MIMD computers. Multiprocessor cache coherency. Synchronization of processes and threads. Multi-core processors. Graphic processors.
REQUIREMENTS FOR STUDENTS:
The students' attendance at lectures is mandatory and it is controlled. During the semester, students need to solve practical problems and write programs in assembly language for CISC-based computer, and the solutions need to be checked by using the simulator.
GRADING AND ASSESSING THE WORK OF STUDENTS:
1. Practical problems (20%)
2. Midterm exams (30% + 50 %)
3. Final (classical) exam
Practical problems. The assistant will define and explain the practical problems to students during the first two weeks of the semester. Between the first and second midterm, students have three opportunities to demonstrate the solutions of the practical problems. If a student does not meet the requirements for the practical part, it is considered that he or she has not passed the course.
Midterm exams. During the semester, students have to take two exams. The first exam provides 30%, and the second 50% of all the points. Both exams consist of theoretical part and numerical/problem part. Condition for accessing to the second midterm is a minimum of 5 points from the theoretical part, and 5 points from the practical part obtained at the first midterm.
After passing successfully practical tasks, students must achieve a minimum of 45% points from midterm exams. The final grades based on the points are as follows:
45-60 points (%) sufficient (2)
61-73 points (%) good (3)
74-88 points (%) very good (4)
89 - 100 points (%) excellent (5)
Students can take an oral exam if they want to improve their grade or if it is determined so by the instructor. The grade correction can be in the range +1 or -1 related to the current grade.
Make-up exam. Students who failed can take a make-up exam (preconditions: they have to collect at least 20 points from midterm exams and a positive grade for the practical problem). The make-up exam can be taken only once.
Final (classical) exam. Students who do not pass midterm exams, have an opportunity to take a classical exam (precondition: positive grade for the practical problem).