Suppose that a programmer has written the following Marie-Sim code on his computer A to add two vectors X={X1, X2, X3...} and Y={Y1, Y2, Y3...} and to stores it as Z={Z1, Z2, Z3...}. The initial values of all Zis are all 0 (as shown).
/ Code Begins
Loop: Load X1
Add Y1
Store Z1
Load Count
Subt N
Store Count
Skipcond 800
Jump Loop
Halt
Count, Dec 1000
N, Dec 1
X1, Dec 3
X2, Dec 1
...
...
X50000, Hex 11
Y1, Dec 3
Y2, Dec -8
...
...
Y50000, Dec 3
Z1, Dec 0
Z2, Dec 0
Z3, Dec 0...
...
Z50000, Dec 0
Each "..." indicates a sequence where i = {1,2,3,}.
Number of clock cycles per instruction where each clock cycle on the computer takes 10 ns
Add 3 Clock Cycles
Skipcond 10 Clock Cycles
Subt 3 Clock Cycles
Store 1 Clock Cycle
Load 1 Clock Cycle
Halt 1 Clock Cycle
Jump 2 Clock Cycles
Once Computer A has executed and stored the values, the programmer wants to multicast this data on Z to certain devices connected via the internet (another application will output this data in the memory). Two networks have 134.34.89.0/24 (Net1) and 122.8.7.4/29 (Net 2) as their CIDR IP addresses. The destinations hosts are on these two networks. From computer A the round-trip time (RTT) to any host machine on the first network (Net 1) is 5 ms whereas the RTT to any host on the second network (Net 2) is 10 ms respectively. Suppose that RTT represents the end-to-end time to transmit all the packets containing the data and receive acknowledgement from the target destination. Computer A sends the data to each possible host on Net 1 one after the other followed by transmission in similar manner to each possible host on Net 2.
(Questions on next page)
(continued from above)
a. What would this program really store for the vector Z? Show the first few values of Z1, Z2, Z3,... etc.
b. How long does it take the computer to execute just the code itself?
c. How long does it take computer A to then send the data to each and every machine on Net1 and Net 2 and receive acknowledgement?