Consider the following function, which computes the dot product of two vectors: float dotprod(float x[8], float y[8]) { float sum 0.0; for (int i = 0; i < 8; i++) { sum += x[i] * y[i]; } return sum; } Furthermore, assume that floats are 4 bytes, that x starts at address 0, and that y starts immediately after x at address 32. Question 1 Direct-Mapped Cache Suppose we have a direct-mapped cache with 2 sets, each of size 16B. What is the overall miss rate for the function dotprod? Answer as a percentage (including the '%' sign). Question 2 Now, instead of defining x as float[8] , suppose we define it as float[12] (this is called padding) but change nothing else about the program. Assume that x still starts at address o in memory, and that y comes directly after it. Now, what is the miss rate for dotprod? Answer as a percentage (including the '%' sign). Question 3 Miss Rate Assume instead that we double the cache size and make it 2-way set associative (i.e., we still have two cache sets, but each set now holds two 16-byte blocks). What is the overall miss rate for the function dotprod for the original, unpadded arrays x and y? Answer as a percentage (including the '%' sign).