In this assignment, you will create your own architecture or ISA (Instruction Set Architecture). You have some freedom to decide how your ISA will finally look like, subject to the constraints listed below:
- The architecture must be GPR architecture (General Purpose Register-based).
- Your instruction size (total instruction width) should be in the vicinity of 16 bits (You may vary the width anywhere from 16 to 24 bits, if you choose to have variable encoding.)
- It is a traditional stored-program computer, i.e. both instructions and data are accessed from memory. Your computer cannot be OISC/URISC (One Instruction Set Computer/Ultimate RISC) or ZISC (Zero Instruction Set Computer) etc.
- The word-size for data is 1 byte
- Memory is byte-addressable (i.e., every byte in the memory has a unique address)
For every decision that you make, you need to provide a justification or motivating reason. You should consider several factors and their potential effects while making decisions. These include,but are not limited to the following:
> Total instruction width: fixed-width or variable-width?
> How many types of operations do you want to support? (You have the freedom to designatea set of opcode patterns as â€˜unusedâ€™ or â€˜reservedâ€™).
> How are the instructions encoded? How many fields are possible within the instruction? Do the different fields have fixed-width or variable width?
> What are the different types of instructions that you want to support (for example, loads, stores, ALU integer, ALU floating point, jumps, branches etc.)
> How many architected registers are there in your architecture? Are there any special registers?
> How many addressing modes do you want to allow.
> Do you want to allow PC-relative (PC + offset) addressing?
> Does instruction storage have to be word-aligned?
> Do you allow double-word data accesses? Are such accesses memory-aligned or do you allow double-words to be stored or loaded beyond double-word boundaries?
> Do data and instructions have separate sections in memory?
>Do you want to allow support for self-modifying code?
For each architectural decision, provide a reason. Also, list the potential advantages or drawbacks of each decision. List all the instructions in your ISA using assembly language mnemonics and the allowed addressing mode (s) for each instruction. Give the instruction encoding format(s) for your ISA. Write how your ISA could potentially help compiler writers and hardware designers. Also, translate the pseudo code shown below into the assembly language of your ISA. If it can betranslated into your ISAâ€™ assembly language in 2 or more different ways , then write the assembly language program for at least 2 of those cases:
1) int a, b, c, d (a, b, c, and d are 8-bit wide integers)
2) c = a + b
3) if c > 0, then d = b-a; otherwise, d = a*2
Deliverables: Create a set of MS-PowerPoint slides for your ISA design and related explanations, justifications, examples, programs, etc. Do not use more than five bullet-points per side. Use Times New Roman font with font-size 24 for slide text. Use clear and labeled figures wherever necessary. Figures must be explained. Convert your set of slides into a single PDF document.