General Purpose Processors Flashcards
Instruction cycle for a GPP?
- Fetch from PC location
- Decode
- Fetch Operands to Data Path from Memory
- Execute
- Store to Memory
What does the PC size specify?
It specifies the program adress space, ie. if the PC is 10bits large -> the memory can have 2^10 words (bytes)
What limits the clock period of a processors?
The operations in the instruction cycle, typically the memory access takes the longest time
Why is a branching a problem for pipelining? What are possible solutions?
(branching = if/loops) –> it is unknown what to load next in a branch
- add delays (insert empty bubble instead of fetching next)
- default decision (if there is a branch, is it taken or not)
What is the difference between von Neumann and Harvard architectures?
Von-Neumann: one memory for programm and data together (one bus -> is bottleneck)
Harvard: one memory for programm and one memory for data (two busses) –> more performant
Advantages of Harvard architechture?
- parallel fetching of data and instructions
- optimized storage technology for each purpose
- memory protection (program unable to change during runtime)
! this architecture is also used by the AVR
What is -gcc actually taking care of? (5 steps)
- Preprocessor (including headers, macros, conditional compilation)
- Compiler (translate human readable code into assembly for a particular processor)
- Assembler (translates assembly into opcodes, produces object file) - “start-up-code” required (AVR)
- Linker (organizes obejct files, libraries and other data and produces a relocatable file –> first addressing)
- takes relocatable file and information about system’s memory and produces an executable file
Name two options to get your program onto the embedded device.
- ISP (in-system programming) –> programmed while installed in a complete system (fast)
- bootloader –> dedicated memory space where startup information is located and flashed on via serial connection (slower)
Advantages of von Neumann architecture?
- program can be treated as data –> reading from disk storage and executing it
- better memory utilization (program memory = data memory)