Difference between revisions of "BITL MCU"

From DiLab
Jump to: navigation, search
(17.09.21)
(Calendar)
Line 9: Line 9:
</big>
</big>
'''Course: Introduction to Processors'''
'''Course: Introduction to Processors'''





Line 29: Line 30:


|
|



|- style='vertical-align: top;'
|- style='vertical-align: top;'
Line 42: Line 42:


Practicing the conversion between the counting systems
Practicing the conversion between the counting systems



'''Quiz 1'''
'''Quiz 1'''


Decimal, binary, octal and hexadecimal systems.
Decimal, binary, octal and hexadecimal systems.





|
|
* Assignment '''Lab_Binary''' - Lab
* Assignment '''Lab_Binary''' - Lab



|- style='vertical-align: top;'
|- style='vertical-align: top;'
|
|

====21.09.21====
====21.09.21====
11:10
11:10
Line 67: Line 61:


|
|



|- style='vertical-align: top;'
|- style='vertical-align: top;'
Line 80: Line 73:


Exercises with the two's complement
Exercises with the two's complement





'''Quiz 2'''
'''Quiz 2'''


Two's complement.
Two's complement.





|
|
* Assignment '''Lab_Complement''' - Lab
* Assignment '''Lab_Complement''' - Lab



|- style='vertical-align: top;'
|- style='vertical-align: top;'
Line 106: Line 92:


|
|



|- style='vertical-align: top;'
|- style='vertical-align: top;'
Line 120: Line 105:
|
|
* Assignment '''Lab_Make''' - Lab
* Assignment '''Lab_Make''' - Lab



|- style='vertical-align: top;'
|- style='vertical-align: top;'
Line 133: Line 117:


|
|



|- style='vertical-align: top;'
|- style='vertical-align: top;'
Line 147: Line 130:
|
|
* Assignment '''Lab_Make_2''' - Lab
* Assignment '''Lab_Make_2''' - Lab



|- style='vertical-align: top;'
|- style='vertical-align: top;'
Line 160: Line 142:


|
|



|- style='vertical-align: top;'
|- style='vertical-align: top;'
Line 174: Line 155:
|
|
* Assignment '''Lab_Dry_Run''' - Lab
* Assignment '''Lab_Dry_Run''' - Lab



|- style='vertical-align: top;'
|- style='vertical-align: top;'
Line 187: Line 167:


|
|



|- style='vertical-align: top;'
|- style='vertical-align: top;'
Line 200: Line 179:


Debugging Assembly programs. Gnu debugger gdb.
Debugging Assembly programs. Gnu debugger gdb.





'''Quiz 3'''
'''Quiz 3'''


Code comprehension.
Code comprehension.





|
|
* Assignment '''Lab_Debug''' - Lab
* Assignment '''Lab_Debug''' - Lab
* '''Due''' '''HW1''' - Arithmetic progression
* '''Due''' '''HW1''' - Arithmetic progression



|- style='vertical-align: top;'
|- style='vertical-align: top;'
Line 227: Line 199:


|
|



|- style='vertical-align: top;'
|- style='vertical-align: top;'
Line 241: Line 212:
|
|
* Assignment '''Lab_TBD''' - Lab
* Assignment '''Lab_TBD''' - Lab



|- style='vertical-align: top;'
|- style='vertical-align: top;'
Line 254: Line 224:


|
|



|- style='vertical-align: top;'
|- style='vertical-align: top;'
Line 269: Line 238:
* Assignment '''Lab_TBD''' - Lab
* Assignment '''Lab_TBD''' - Lab
* '''Due''' '''HW2''' - Matrix multiplication
* '''Due''' '''HW2''' - Matrix multiplication



|- style='vertical-align: top;'
|- style='vertical-align: top;'
Line 282: Line 250:


|
|



|- style='vertical-align: top;'
|- style='vertical-align: top;'
Line 295: Line 262:
Assembly code comprehension.
Assembly code comprehension.
Two programming tasks.
Two programming tasks.



|
|
* Assignment '''Proj''' - Project
* Assignment '''Proj''' - Project



|- style='vertical-align: top;'
|- style='vertical-align: top;'
Line 314: Line 279:
* '''Due''' '''M1P1''' - Midterm 1 programming task 1, tested
* '''Due''' '''M1P1''' - Midterm 1 programming task 1, tested
* '''Due''' '''M1P2''' - Midterm 1 programming task 2, tested
* '''Due''' '''M1P2''' - Midterm 1 programming task 2, tested



|- style='vertical-align: top;'
|- style='vertical-align: top;'
Line 328: Line 292:
|
|
* Assignment '''Lab_TBD''' - Lab
* Assignment '''Lab_TBD''' - Lab



|- style='vertical-align: top;'
|- style='vertical-align: top;'
Line 341: Line 304:


|
|



|- style='vertical-align: top;'
|- style='vertical-align: top;'
Line 354: Line 316:


|
|



|- style='vertical-align: top;'
|- style='vertical-align: top;'
Line 369: Line 330:
* Assignment '''Lab_Summary''' - Lab
* Assignment '''Lab_Summary''' - Lab
* '''Due By midnight''' '''Proj''' - Project
* '''Due By midnight''' '''Proj''' - Project



|- style='vertical-align: top;'
|- style='vertical-align: top;'
Line 381: Line 341:
Time for exams
Time for exams
|
|



|- style='vertical-align: top;'
|- style='vertical-align: top;'
Line 394: Line 353:
Assembly code comprehension.
Assembly code comprehension.
Multiple choice questions and a programming task.
Multiple choice questions and a programming task.



|
|
* '''Due''' '''ExamP1''' - Exam programming task, tested
* '''Due''' '''ExamP1''' - Exam programming task, tested



|}
|}

Revision as of 21:56, 1 October 2021

Shortcuts: Calendar | Assignments | Resources | Today (if there is a class) Course: Introduction to Processors


Calendar

Date Topic, content Deliverables

14.09.21

11:10

Hexadecimal arithmetic

Representation of non-negative numbers in hardware, registers and memory. Decimal, binary, octal, and hexadecimal systems. Converting between the systems.

17.09.21

11:10

Lab :: Quiz 1

Lab

Practicing the conversion between the counting systems

Quiz 1

Decimal, binary, octal and hexadecimal systems.

  • Assignment Lab_Binary - Lab

21.09.21

11:10

Two's complement

Representing negative numbers in hardware. Register size, and why it is important. Methods for encoding negative numbers: packed, signed, bias, one's complement and two's complement. Converting between the value and two's complement in binary and hexadecimal systems.

24.09.21

11:10

Lab :: Quiz 2

Lab

Exercises with the two's complement

Quiz 2

Two's complement.

  • Assignment Lab_Complement - Lab

28.09.21

11:10

Processor architecture

Architecture of a processor. Registers, register file, ALU, datapath. CISC vs. RISC architectures. x86 architecture as CISC representative. ARM architecture as RISC. Instruction encoding.

01.10.21

11:10

Lab

Developing and testing a simple Assembly program. Using cross-compilation tools. Introduction to the Make system.

  • Assignment Lab_Make - Lab

05.10.21

11:10

Computing environment

Environment and tools for compiling and debugging Assembly programs. Compiler, preprocessor, assembly, linker, loader, debugger. Cross-compilation and toolchains. Emulators and virtual machines.

08.10.21

11:10

Lab

Advanced features of the Make system.

  • Assignment Lab_Make_2 - Lab

12.10.21

11:10

ARM Assembly and arithmetic

Introduction to ARM Assembly language and programming. Instruction types. Arithmetic instructions. MOV, ADD, SUB. MVN, ADC, SBC, RSB, RSC. Barrel Shifter.

15.10.21

11:10

Lab

Evaluating and following the code "on paper".

  • Assignment Lab_Dry_Run - Lab

19.10.21

11:10

Flow control and tests

Flow control in Assembly. Branch instructions. B, BL, BX, BLX. Working directly with PC register. CPSR flags. Condition field. Bit operations. AND, ORR, EOR, BIC, shift and rotation. CMP, CMN, TST, TEQ. Fast flags and the S postfix.

22.10.21

11:10

Lab :: Quiz 3

Lab

Debugging Assembly programs. Gnu debugger gdb.

Quiz 3

Code comprehension.

  • Assignment Lab_Debug - Lab
  • Due HW1 - Arithmetic progression

26.10.21

11:10

Memory instructions

Reading and writing data to memory. Memory access instructions. STR, LDR, STRB, STRH, LDRB, LDRH, LDRSB, LDRSH. Addressing modes: offset, pre-indexed and post-indexed. Using barrel shifter with addressing. Data alignment in memory.

29.10.21

11:10

Lab

TBD

  • Assignment Lab_TBD - Lab

02.11.21

11:10

Calling subroutines and interfacing with C

Variable types in C: static, automatic and dynamic. Calling subroutines and parameter passing conventions. Parameters and return value. Stack and registers. Saving the registers, the context. Loading and storing multiple registers: LDM, STM. Interfacing between Assembly and C.

05.11.21

11:10

Lab

TBD

  • Assignment Lab_TBD - Lab
  • Due HW2 - Matrix multiplication

09.11.21

11:10

Symbols

Symbol encoding in hardware and software. Code tables. ASCII. EBCDIC. ISO code tables. Foreign letter symbols. UTF-8, UTF-16. Strings in C and memory. Converting values to symbols and strings.

12.11.21

11:10

Midterm

Data representation in memory. Assembly code comprehension. Two programming tasks.

  • Assignment Proj - Project

16.11.21

11:10

Expressions and Macro commands

Expressions in Assembly. Operators in expressions. Constants. Assigning values to symbols. Directives: .set, .equiv, .eqv. Conditional compilation. Directives .if, .ifdef, .endif., ifb, .ifc, .ifeqs. More conditionals .ifeq, .ifge, .ifne and others. Macro commands: .macro, .endm., .rept. Recursive macros. Local macros. Macros across sections.

  • Due M1P1 - Midterm 1 programming task 1, tested
  • Due M1P2 - Midterm 1 programming task 2, tested

23.11.21

11:10

Lab

TBD

  • Assignment Lab_TBD - Lab

26.11.21

11:10

Inline Assembly

Including Assembly in C code. Inline code and Assembly code operands. Tasks for the compiler, linker and loader. Dynamic loaders and libraries.

30.11.21

11:10

Optimizations

Execution time for instructions. Case study for code optimization. Leveraging the documentation and specification of instructions. Reordering the code. Unrolling loops. Taking advantage of branch prediction. Cache memory and the code performance.

03.12.21

11:10

Lab

Review of the course topics

  • Assignment Lab_Summary - Lab
  • Due By midnight Proj - Project

13-22.12.2021

Exam week

Time for exams

13-22.12.21

Exam

Data representation in memory. Assembly code comprehension. Multiple choice questions and a programming task.

  • Due ExamP1 - Exam programming task, tested

Assignments

Resources