Consider a machine with a byte addressable main memory of 2^16 bytes and block size of 8 bytes. Assume that a direct mapped cache consisting of 32 lines (lines = blocks) is used with this machine. a. How is a 16-bit memory address divided into tag, line number, and byte number? b. Into what line would bytes with each of the following addresses be stored? 0001 0001 0001 1011 1100 0011 0011 0100 1101 0000 0001 1101 1010 1010 1010 1010 c. Suppose the byte with address 0001 1010 0001 1010 is stored in the cache. What are the addresses of the other bytes stored along with it? d. How many total bytes of memory can be stored in the cache? e. Why is the tag also stored in the cache? f. Let us assume an array a[100] of integers, which starts from address "0" in memory, meaning that a[0] starts from address "0" in memory. Assume that each integer is 4 bytes long. Now assume a 2-way, set-associative cache with 32 sets, having a line (block) size of 8 bytes. Compute the exact set number in which array element a[2] and a[64] are mapped in the cache.