For these yield problems, assume a 30 cm wafer with a defect rate of 1.25 defects per cm2, and a wafer yield of 100% (no totally bad wafers).
The Intel Pentium M "Dothan" processor first shipped in 2005. It had a die size of 87 mm2. 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?
The Intel "Coffee Lake" processor first shipped in 2017. It had a die size of 149 mm2. 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?
The Manelbrot set is defined by the equation
z = z2 + 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?
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)?
What speedup do you expect for the overall program?