COMP 3304 – Computer Organization Final Project This is a team project, each team can have up to five students. Each team has to design a simple computer similar to the example given, then write...

1 answer below »
Need help with a project.

The project is divided into 3 steps:


1. Instruction Set Design


2. Data Path and Microarchitecture Design


3. Computer Programming and Implementation




COMP 3304 – Computer Organization Final Project This is a team project, each team can have up to five students. Each team has to design a simple computer similar to the example given, then write program to simulate the simple computer. The project is divided into 3 steps: 1. Instruction Set Design 2. Data Path and Microarchitecture Design 3. Computer Programming and Implementation Each step has its specific requirement. The following 3 deliverables are required for each team: 1. A project report including the description of your problem, your solution, your code, your result, and your team work. You need submit this report to eCourses. Make sure you name your file as I expected. 2. A short video to demonstrate your project. You have to describe your problem first, then describe your solution, then demonstrate your project, as well as describe your team work. Upload the video to YouTube, then include the link in the project report of deliverable 1. 3. A 5-minute presentation on 4/25/2022. Please let me know your team members before 4/1/2022. Steps 1 & 2 Due: 4/24/2022, 11:59pm Step 3 Due: 4/25/2022, 1:00pm Project Procedure Sub-project I: The first subproject requires the students to design and encode their own instruction set. The project requires students to determine which registers their machine should have, create a sequence of machine instructions, and produce a unique binary encoding for each instruction. The students are restricted to a fixed-length encoding of 8 bits/instruction, and their instructions must be capable of addressing at least 256 bytes of memory. At minimum, instruction sets must contain instructions that transfer data between registers and memory, basic arithmetic instructions, and conditional control instructions. To ensure that their instruction set is capable of running real programs, students will be given a small for loop in C or Java that adds a series of numbers together and stores the result in memory. Students are required to translate this program into their own assembly code and machine code and submit that with their instruction set. The first subproject is submitted in paper form as a report; students are required to explain and justify their choices of instructions and registers. For loop in C: int a[5] = {1, 2, 3, 4, 5}; int sum = 0; for (int i = 0; i < 5,="" i++)="" sum="" +="a[i];" move="" ax,="" 1="" places="" 1="" in="" ax="" move="" cx,="" 10="" places="" 10="" in="" cx="" xor="" dx,="" dx="" puts="" zero="" into="" dx="" label1:="" add="" dx,="" ax="" add="" the="" int="" turn="" 1-10="" to="" dx="" inc="" ax="" loop="" lable1="" this="" set="" of="" instruction="" allows="" for="" the="" user="" to="" set="" designated="" numbers="" in="" an="" int="" and="" also="" provide="" one="" as="" a="" que.="" then="" it="" will="" move="" into="" the="" loop="" until="" all="" the="" array="" is="" completed="" read.="" notes:="" 1.="" submit="" your="" report="" to="" ecourses="" either="" in="" a="" word="" file="" or="" in="" a="" pdf="" file;="" 2.="" name="" your="" file="" as="" “last="" name,="" first="" name_proj1.docx/.pdf”,="" for="" example,="" my="" last="" name="" is="" wang="" and="" first="" name="" is="" yonghui,="" so,="" my="" word="" file="" will="" be="" named="" as="" “wang,="" yonghui_proj1.docx”="" 3.="" due="" time:="" 4/1/2022,="" 11:59pm="" an="" example="" system:="" https://horstmann.com/simplecomputer/="" sample="" report="" for="" part="" i="" 1.="" the="" designed="" instruction="" set="" opcode="" mnemonic="" description="" 0xa0="" store="" n="" store="" the="" contents="" of="" ax="" in="" memory="" location="" n="" 0xa1="" load="" n="" load="" ax="" with="" the="" contents="" of="" location="" n="" 0x2c="" addi="" n="" add="" n="" to="" ax="" (add="" immediate)="" 0x2d="" subi="" n="" subtract="" n="" from="" ax="" (subtract="" immediate)="" 0x32="" add="" n="" add="" the="" contents="" of="" location="" n="" to="" ax="" 0x33="" sub="" n="" subtract="" the="" contents="" of="" location="" n="" from="" ax="" 0x34="" mul="" n="" multiply="" the="" contents="" ax="" by="" the="" contents="" of="" location="" n="" 0x35="" div="" n="" divide="" the="" contents="" of="" ax="" by="" the="" contents="" of="" location="" n="" 0x7f="" jpos="" n="" jump="" to="" the="" instruction="" in="" location="" n="" if="" ax=""> 0 0x80 JZERO n Jump to the instruction in location n if AX = 0 0x00 HALT Halt the execution 2. Explanation and Justification of Choices of Instructions and Registers One register AX is required to support the execution of the instruction. The instruction set uses fixed-length encoding of 8 bits/instruction and 8-bit memory addresses make sure that the instructions are capable of addressing at least 256 bytes of memory. The instruction set contains instructions that transfer data between registers and memory (STORE and LOAD), basic arithmetic instructions (ADDI, SUBI, ADD, SUB, MUL, and DIV), and conditional control instructions (JPOS and JZERO). 3. Translate C for loop to assembly code and machine code For loop in C: int a[5] = {1, 2, 3, 4, 5}; int sum = 0; for (int i = 0; i < 5, i++) sum += a[i]; assume that the memory address for variable “sum” is 0x50, the remaining length of array “a” is saved in memory location 0x51, the address for array “a” starts at 0x52, and the address for the machine code starts at 0x00. assembly code machine code description load 0x52 0xa1 0x52 load ax with a value in array “a” add 0x50 0x32 0x50 add the “sum” value to ax store 0x50 0xa0 0x50 store the contents of ax to “sum” load 0x01 0xa1 0x01 load ax with the current array “a” value address in 0x01 addi 0x01 0x2c 0x01 add 1 to ax to make it point to the next array value store 0x01 0xa0 0x01 store the new address back to location 0x01 for next loop load 0x51 0xa1 0x51 load the remaining length of array to ax subi 0x01 0x2d 0x01 subtract 1 from ax due to the decreasing of remaining values store 0x51 0xa0 0x51 store the updated remaining length of array jpos 0x00 0x7f 0x00 if still have value left, jump to location 0x00 to sum the next value halt 0x00 halt the execution 5,="" i++)="" sum="" +="a[i];" assume="" that="" the="" memory="" address="" for="" variable="" “sum”="" is="" 0x50,="" the="" remaining="" length="" of="" array="" “a”="" is="" saved="" in="" memory="" location="" 0x51,="" the="" address="" for="" array="" “a”="" starts="" at="" 0x52,="" and="" the="" address="" for="" the="" machine="" code="" starts="" at="" 0x00.="" assembly="" code="" machine="" code="" description="" load="" 0x52="" 0xa1="" 0x52="" load="" ax="" with="" a="" value="" in="" array="" “a”="" add="" 0x50="" 0x32="" 0x50="" add="" the="" “sum”="" value="" to="" ax="" store="" 0x50="" 0xa0="" 0x50="" store="" the="" contents="" of="" ax="" to="" “sum”="" load="" 0x01="" 0xa1="" 0x01="" load="" ax="" with="" the="" current="" array="" “a”="" value="" address="" in="" 0x01="" addi="" 0x01="" 0x2c="" 0x01="" add="" 1="" to="" ax="" to="" make="" it="" point="" to="" the="" next="" array="" value="" store="" 0x01="" 0xa0="" 0x01="" store="" the="" new="" address="" back="" to="" location="" 0x01="" for="" next="" loop="" load="" 0x51="" 0xa1="" 0x51="" load="" the="" remaining="" length="" of="" array="" to="" ax="" subi="" 0x01="" 0x2d="" 0x01="" subtract="" 1="" from="" ax="" due="" to="" the="" decreasing="" of="" remaining="" values="" store="" 0x51="" 0xa0="" 0x51="" store="" the="" updated="" remaining="" length="" of="" array="" jpos="" 0x00="" 0x7f="" 0x00="" if="" still="" have="" value="" left,="" jump="" to="" location="" 0x00="" to="" sum="" the="" next="" value="" halt="" 0x00="" halt="" the="">
Answered 16 days AfterApr 17, 2022

Answer To: COMP 3304 – Computer Organization Final Project This is a team project, each team can have up to...

Karthi answered on Apr 25 2022
87 Votes
SOLUTION.PDF

Answer To This Question Is Available To Download

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here