Assume you are shopping for a new computer system.
_(10 Pts) Find and submit an ad for the system you want to buy (or multiple ads for components that you want to use to piece together in the system). Be sure that it contains detailed information of the system / system components._
_(25 Pts) Make a detailed list of the relevant terms/jargon and provide a detailed explanation of each item._
_(25 Pts) Identify at least 3-5 terms/jargon that are confusing (or may be confusing) to a buyer without technical experience, explain the confusion, and clarify._
_(30 Pts) Explain why/how each item is important to be included in your desired system, and how it interacts with the other system components. Discuss alternatives and trade-offs for each item._
_(10 Pts) The analysis does not have to be in a formal research paper format, but should be typed, organized, easy to read, and professional in appearance._
Submit a copy of your ad along with your analysis of the aforementioned items.
PUT AD HERE
This computer features the following:
_Answer each of the following. Where appropriate, show your work. Answers requiring computation without mathematical support will not receive credit. Unless otherwise noted, Answers / solutions must be typed. Sentences should be complete and grammatically correct._
-
(4 Pts – 1 Pt Each) How many bits are used for each of the following data
types?
- Word, 16 bits
- Doubleword, 32 bits
- Quadword, 64 bits
- Double Quadword, 128 bits
- (4 Pts) Explain the difference between computer organization and computer architecture? Include examples.
- (2 Pts) What is the Principle of Hardware and Software Equivalence?
- (1 Pt) For quantities of power, electrical voltage, frequency (clock speeds), is it more common to see prefixes representing powers-of-2 or powers-of-10? Powers of 10. Power is often measured in Watts, which are an SI unit and therefore are very base 10. Voltage is often measured in Volts, which are another SI unit and therefore are very base 10. Frequency is measured in Hertz, SI unit, base 10.
-
(6 Pts) Name three basic components of every computer (as defined for this
class), and briefly discuss the function of each.
- Processor, this takes instructions and executes them.
- Memory, this holds results of instructions for the processor.
- Output, this is the device that displays the output of a process.
I wasn't able to find anything for this specifically, so giving my best guess.
- (1 Pt) What unit is typically used to measure the speed of a computer clock? The speed of a computer clock is often measured with frequency, which uses units of Hertz. Hertz is often abbreviated as Hz, and will be abbreviated for the rest of this document as such. Hz is an SI unit, so has the luxury of having prefixes. 1 Hz is 1 cycle per second, 1 KHz is 1000 cycles per second, 1 MHz is a million cycles per second, 1 GHz is a billion cycles per second, 1 THz is a trillion cycles per second, and so on.
- (2 Pts) What is the mission of IEEE? The IEEE is the Institute of Electrical and Electronics Engineers, a standards body for all things electronic. They are most notable, in my opinion, for standardizing WiFi with numerous drafts and admendments to the original IEEE 802.11 standard. The mission statement of the IEEE can be found on their website, "IEEE's core purpose is to foster technological innovation and excellence for the benefit of humanity."
- (1 Pt) What does ISO stand for? ISO is an acronym describing the International Organization for Standardization, which in the native French of the ISO is Organisation Internationale de Normalisation, so the acronym doesn't make any sense in any language.
- (2 Pts) What is the relationship between Clock Speed (frequency) and Clock Cycle Time (period)? This one's easy. Frequency is measured in Hz, Period is measured in seconds. Hz can also be described as \(\frac{1}{\text{s}}\), so to find the corresponding period for a given frequency, simply take 1 and divide by the period. This can also be used for finding the frequency for a given period, as I will demonstrate in a few problems below.
- (14 Pts) Name the 7 layers of the Computer Abstraction Hierarchy. Briefly describe each in terms of its function and its relationship to the other layers.
- (3 Pts) State Rock’s Law. State Moore’s Law. Explain how these two laws are related. Rock's: The cost of a semiconductor chip fabrication plant doubles every four years.
Moore's: The amount of transistors in processors doubles every two years.
Moore's law, above, states that during the time for Rock's law, above, to
occur the amount of transistors in the processor will quadruple. This
tracks with manufacturing tending to get cheaper over time for the same
output, so Rock's scales slower that Moore's, which is useful for having
cheap processors.
- (3 Pts) Name three characteristics of the von Neumann Architecture.
- (3 Pts) Explain the fetch-decode-execute cycle with respect to the von Neumann Architecture.
- (2 Pts) What is meant by the term “von Neumann bottleneck”
- (4 Pts) Name and briefly describe two types of applications that would be better suited to assembly language than a high-level language. Programs requiring maximum possible processing speed. This can include programs that handle stock trading and networking devices. The other sort of program that would be better suited to assembly is embedded programs. It does not make sense to run Java or a whole web browser on your fridge, despite the fancy screen.
- (2 Pts) Briefly explain why translated programs usually execute more quickly than interpreted ones? Simply because the code is converted into machine language as part of the compilation process for translated programs, whereas for interpreted programs the code is only converted to machine language when the code is executed. This allows for much easier prototyping for interpreted languages but slower execution times compared to translated ones.
-
(12 Pts – 1 Pt Each) Complete the following table
Value (2x or 10x) Prefix Decimal Value 103 Kilo 1000 240 Tera 1099511627776 10-6 Micro 0.000001 210 Kilo (sometimes Kibi) 1024 10-12 Pico 0.000000000001 106 Mega 1000000 109 Giga 1000000000 10-3 Milli 0.001 230 Giga (sometimes Gibi) 1073741824 1012 Tera 1000000000000 220 Mega 1048576 10-9 Nano 0.000000001 - (5 Pts) The frequencies for FM radio range from 88 MHz to 108 MHz. What is the clock period range for FM radio. Use appropriate units and prefixes. Show your work. This, as stated before, is fairly trivial. For the low end of the frequency range (and the high end of the period range):
\begin{align*}
\text{Period} &= \frac{1}{\text{Frequency}} \\
&= \frac{1}{88000000 \text{Hz}} \\
&= 11.36 \text{ns}
\end{align*}
For the high end:
\begin{align*}
\text{Period} &= \frac{1}{108000000 \text{Hz}} \\
&= 9.259 \text{ns}
\end{align*}
- (4 Pts) A complete clock cycle measures 9.62 ns, what is the corresponding frequency. We just do what we did previously in reverse:
\begin{align*}
\text{Frequency} &= \frac{1}{\text{Period}} \\
&= \frac{1}{0.00000000962 \text{s}} \\
&= 103.95 \text{MHz}
\end{align*}
- (2 Pts) Explain the difference between L0 and L1 languages with respect to virtual machines and how the two interact. L0 is defined in our book as the actual machine code for the machine running the virtual machine. This is usually native x86 instructions, nowadays probably much more 64-bit and even vectorized for certain CPUs.
L1 is defined in our book as the assembly language we will be interfacing
with. This is a portable description of what the CPU will be doing, which
can either be interpreted at runtime or compiled into L0 code.
- (8 Pts) List the four levels of a virtual machine from lowest to highest, and briefly describe each.
- Digital Logic, this is the lowest possible machine, and consists of physical transistors.
- Instruction Set Architecture (LSA), this is the binary code that the processor sees. It instructs the processor what instructions to execute, and what data to use in those instructions.
- Assembly Language, this is the code we will be mostly working with, it is an abstraction of LSA code that is easier for humans to read. It does however require much more thinking than:
- High-Level Languages, this is your C, C#, etc.
- (4 Pts) Explain the concept of portability and discuss how it does or does not apply to Assembly Language programming. Portability is the concept of being able to take one program from one computer and run it on another computer with not much work on the programmer's part. For Assembly Language, portability is achieved by restricting oneself to instructions that are part of one specification. Just be sure that the compiler for the syntax you've chosen can run on many machines.
- (2 Pts) What is meant by a one-to-many relationship when comparing a high-level language to machine language? It simply means that one statement in a high-level language, say:
int how_many_lemons = amount_of_lemons * lemon_multiplier;
Can be interpreted by different compilers or even different compiler flags
to compile into different machine code, depending on how lenient that
compiler is with the preprocessor and whatnot. There are many ways to
attack multiplication on a computer. Often, with processors, there are
specific instructions to achieve multiplication. However, one could also
multiply by assigning the value for amount_of_lemons
to an address in
memory, then add lemon_multiplier - 1
amounts of amount_of_lemons
to
the same address for the same effect.
- (3 Pts) What does the following statement imply about assembly language syntax checking? “Most rules in assembly language are based on physical limitations of the target processor and its machine language.” This implies that instructions written in ASM are limited by properties of the CPU they are designed to run on. For example, in this course, we'll be dealing with 32-bit instructions. Since the 80's, we've moved on mostly to 64-bit processors, but are still able to run 32-bit programs and L0 code using translators built-in to our operating systems. In addition, many 64-bit processors also support 32-bit instructions for backwards-compatibility. However, as operating systems move further and further into forcing 64-bit down our throats, I foresee that x86 processors might end up being pure 64-bit.
- (6 Pts) Define the following terms:
(From the Book)
- Assembler: "A utility program that converts source code programs from assembly language into machine language."
- Linker: "A utility program that combines individual files created by an assembler into a single executable program."
- Debugger: "A ... utility ... [that] lets you ... step through a program while it's running and examine registers and memory."