Skip Navigation

Central Processing Unit Assignment

For this assignment, you will use QEMU to boot several different virtual systems with different Instruction Set Architectures and various CPU models. You will also use either QEMU or another emulator to run a system with an architecture other than x86_64 or AArch64.

Page Contents

Background Material

Begin by studying the following OER materials:

You will need to download both the x86_64 and aarch64 “Virtual” ISO images of Alpine Linux to do the first part of this assignment. Note that you only need to boot Alpine Linux from the ISO files in virtual machines - it is not necessary to perform an Alpine Linux installation for this assignment.

For the second part of this assignment, you will need to find an architecture other than x86_64 or AArch64 for which an emulator is available for your host operating system. One option would be to use an architecture that has a qemu-system- emulator available for it. Alpine Linux is available for small number of these other architectures, but you do not have to use Alpine Linux for this part of the assignment. Any other distribution or operating system will suffice, as long as it can be booted in the emulator.

An alternative for the second part of the assignment is to use an emulator for an historical computer system or a video game console. Various emulators are available for old computers (such as the TRS-80 or Commodore64) and both historical and modern video game consoles.

Requirements

Prepare a video presentation in MP4 or WEBM format containing the following:

  1. Give a video (not screenshots!) demonstration showing that you can boot the Alpine Linux installer for the x86_64 architecture in a QEMU virtual machine. Log into the installer environment and run the uname -a command to show the running architecture. Then, run the command cat /proc/cpuinfo to show information about the virtual CPU.
  2. Shut down the virtual machine from the previous step. Change the CPU model to something else, then boot the virtual machine again. Show the output of running cat /proc/cpuinfo with this other CPU model.
  3. Explain what the CPU flags are in the /proc/cpuinfo output. How do these relate to specific features or capabilities of the given CPU model? (You do NOT need to explain what each flag means, just what the flags represent as a whole.)
  4. Demonstrate that you can boot the Alpine Linux installer for the AArch64 architecture in a QEMU virtual machine. Log into the installer environment and run uname -a to verify the running architecture. Show the output of cat /proc/cpuinfo for this architecture.
  5. Shut down the virtual machine from the previous step. Change the CPU model to something else, then boot the virtual machine again. Show the output of running cat /proc/cpuinfo with this other CPU model.
  6. Explain the differences between the two models of Arm CPU you demonstrated in the previous two steps. If either or both Arm models were QEMU implementations of real CPU hardware, look up the specifications for the original CPU hardware.
  7. Demonstrate running an architecture other than x86_64 or AArch64 in a virtual machine. This could be a QEMU virtual machine, an emulator for another computer system, or a video game console emulator.
  8. Describe the architecture of the system you emulated in the previous step. What Instruction Set Architecture did the system use? For what purpose was (or is) that architecture typically used? Is the emulated system an example of a System-on-a-Chip (SoC) or a more traditional computer with separate CPU and RAM chips?

IMPORTANT: To receive credit, the demonstrations required in the above step MUST be performed by recording a “live” interaction with QEMU. Screenshots are NOT acceptable for this purpose. If your computer cannot handle screen capture and running QEMU at the same time, use your cell phone to record the demonstration.

Grading

Please review the Central Processing Unit Rubric before submitting this assignment to Moodle.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.