### Estimating Yield

For these yield problems, assume a 30 cm wafer with a defect rate of 1.25 defects per cm^{2}, and a wafer yield of 100% (no totally bad wafers).

#### Pentium M

The Intel Pentium M "Dothan" processor first shipped in 2005. It had a die size of 87 mm^{2}. Approximately how many Pentium M dies fit on a single wafer?

Using the 2003 die yield formula with α=4, what is the approximate expected number of good dies per wafer?

#### Core i7

The Intel "Coffee Lake" processor first shipped in 2017. It had a die size of 149 mm^{2}. Approximately how many of these dies fit on a single wafer?

Using the 2017 die yield formula with *N*=10, what is the approximate expected number of good dies per wafer?

### Simulation

The Manelbrot set is defined by the equation

z = z^{2} + c

For complex number c, starting with z=0, you iterate the equation. Any point, c, that never diverges to infinity is in the set. It has been proven that once |z| is greater than 2, it will eventually go to infinity. One common way to visualize the set is to plot the points on the complex plane, color-coded by how many iterations until |z|>2, with some cap on the number of iterations to test.

This is the C program that generated the image to the right. Compile this and run it with the valgrid callgrind tool, then examine the resulting profile file. All of the tools you need are already on the gl.umbc.edu servers, or you can download and run on your own computer. You will need to compile in debug (Use the `-g` flag for `gcc` if running on gl) so valgrind will have the function symbol names. On gl, you will have to use the `callgrind_annotate` tool to process the `callgrind.out` file. On your own computer, you may be able to use the more powerful and easier `kcachegrind` visual tool.

#### Overall Instructions Executed

What are the total number of instructions executed? How many instructions in all calls to the complex multiply function, `Mul`? How many for the complex number addition funtion `Add`? How many for the `SquaredLength` function?

#### Instruction Breakdown

What are the total number instructions **per call** of Mul, Add, and SquaredLength? To figure this out, you will need to add some counters to the program to count the number of calls to each function. Use this to find the number of calls, but do not include that counter code when profiling, as it will affect the total number of instructions executed.

### Evaluting ISA changes

Consider adding complex number registers and operations to the ISA. This would turn each call to Mul, Add, and SquaredLength into a single instruction. For the following, assume the CPI and clock rate don't change.

#### Speedup of enhanced code

What would you expect for the local speedup for the compilex number math code (Mul, Add, and Squared Length)?

#### Overall speedup

What speedup do you expect for the overall program?