Advertisement
Guest User

Untitled

a guest
Apr 19th, 2014
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.13 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <stdlib.h>
  4. #include <ctime>
  5. #include <iomanip>
  6. #include <fstream>
  7.  
  8. using namespace std;
  9.  
  10. const int r = 8192;
  11. const int c = 3;
  12. const int r1 = 262144;
  13. int i;
  14. int j;
  15. int k;
  16.  
  17. int max;
  18. int min;
  19. int numberW0;
  20. int index_max;
  21. int index_min;
  22. int numberX0;
  23. int tag_max;
  24. int tag_min;
  25. int numberY0;
  26. unsigned int data_max;
  27. int data_min;
  28. int numberZ0;
  29.  
  30. int numberW1;
  31. int index_max1;
  32. int index_min1;
  33. int numberX1;
  34. int tag_max1;
  35. int tag_min1;
  36. int numberY1;
  37. unsigned int data_max1;
  38. int data_min1;
  39. int numberZ1;
  40.  
  41. int numberW2;
  42. int index_max2;
  43. int index_min2;
  44. int numberX2;
  45. int tag_max2;
  46. int tag_min2;
  47. int numberY2;
  48. unsigned int data_max2;
  49. int data_min2;
  50. int numberZ2;
  51.  
  52. int numberW3;
  53. int index_max3;
  54. int index_min3;
  55. int numberX3;
  56. int tag_max3;
  57. int tag_min3;
  58. int numberY3;
  59. unsigned int data_max3;
  60. int data_min3;
  61. int numberZ3;
  62.  
  63. int numberW4;
  64. int index_max4;
  65. int index_min4;
  66. int numberX4;
  67. int tag_max4;
  68. int tag_min4;
  69. int numberY4;
  70. unsigned int data_max4;
  71. int data_min4;
  72. int numberZ4;
  73.  
  74. double new_valid = 0;
  75. double new_tag = -9999999999;
  76. double new_data = -9999999999;
  77.  
  78. double tag_value;
  79. int s;
  80. int t;
  81. double block0;
  82. double block1;
  83. double block2;
  84. double block3;
  85. int v;
  86. double levBlock;
  87.  
  88. fstream armRes;
  89.  
  90. int main()
  91. {
  92. double way0 [r][c]; //declaration of the arrays
  93. double way1 [r][c];
  94. double way2 [r][c];
  95. double way3 [r][c];
  96.  
  97. double lev2[r1][c];
  98.  
  99. for (i = 0; i < r; i++) // initialization of the arrays
  100. {
  101. way0[i][0] = new_valid;
  102. way0[i][1] = new_tag;
  103. way0[i][2] = new_data;
  104.  
  105. way1[i][0] = new_valid;
  106. way1[i][1] = new_tag;
  107. way1[i][2] = new_data;
  108.  
  109. way2[i][0] = new_valid;
  110. way2[i][1] = new_tag;
  111. way2[i][2] = new_data;
  112.  
  113. way3[i][0] = new_valid;
  114. way3[i][1] = new_tag;
  115. way3[i][2] = new_data;
  116. }
  117.  
  118. for (j = 0; j < r1; j++)
  119. {
  120. lev2[j][0] = new_valid;
  121. lev2[j][1] = new_tag;
  122. lev2[j][2] = new_data;
  123. }
  124.  
  125.  
  126. srand (time(0)); // random number generator seed
  127.  
  128.  
  129. int max = r;
  130. int min = 0;
  131. int max1 = r1;
  132. int min1 = 0;
  133. int numberW0 = (rand()%max+min+1); // number of entires to populate way0
  134.  
  135. for (k = 0; k <= numberW0; k++)
  136. {
  137. int index_max = 8192;
  138. int index_min = 0;
  139.  
  140. numberX0 = rand()%index_max+index_min+1; // random index to use
  141.  
  142. int tag_max = 32768;
  143. int tag_min = 0;
  144. numberY0 = rand()%tag_max+tag_min+1; // random tag for the index
  145.  
  146. unsigned int data_max = 429496729; // random data for the index
  147. int data_min = 0;
  148. numberZ0 = rand()%data_max+data_min+1;
  149.  
  150. way0 [numberX0][0] = 1;
  151. way0 [numberX0][1] = numberY0;
  152. way0 [numberX0][2] = numberZ0;
  153. }
  154.  
  155. int numberW1 = (rand()%max+min+1); // number of entires to populate way1
  156.  
  157. for (k = 0; k <= numberW1; k++)
  158. {
  159. int index_max1 = 8192;
  160. int index_min1 = 0;
  161.  
  162. numberX1 = rand()%index_max1+index_min1+1; // random index to use
  163.  
  164. int tag_max1 = 32768;
  165. int tag_min1 = 0;
  166. numberY1 = rand()%tag_max1+tag_min1+1; // random tag for the index
  167.  
  168. unsigned int data_max1 = 429496729; // random data for the index
  169. int data_min1 = 0;
  170. numberZ1 = rand()%data_max1+data_min1+1;
  171.  
  172. way1 [numberX1][0] = 1;
  173. way1 [numberX1][1] = numberY1;
  174. way1 [numberX1][2] = numberZ1;
  175. }
  176.  
  177. int numberW2 = (rand()%max+min+1); // number of entires to populate way2
  178.  
  179. for (k = 0; k <= numberW2; k++)
  180. {
  181. int index_max2 = 8192;
  182. int index_min2 = 0;
  183.  
  184. numberX2 = rand()%index_max2+index_min2+1; // random index to use
  185.  
  186. int tag_max2 = 32768;
  187. int tag_min2 = 0;
  188. numberY2 = rand()%tag_max2+tag_min2+1; // random tag for the index
  189.  
  190. unsigned int data_max2 = 429496729; // random data for the index
  191. int data_min2 = 0;
  192. numberZ2 = rand()%data_max2+data_min2+1;
  193.  
  194. way2 [numberX2][0] = 1;
  195. way2 [numberX2][1] = numberY2;
  196. way2 [numberX2][2] = numberZ2;
  197. }
  198.  
  199. int numberW3 = (rand()%max+min+1); // number of entires to populate way3
  200.  
  201. for (k = 0; k <= numberW3; k++)
  202. {
  203. int index_max3 = 8192;
  204. int index_min3 = 0;
  205.  
  206. numberX3 = rand()%index_max3+index_min3+1; // random index to use
  207.  
  208. int tag_max3 = 32768;
  209. int tag_min3 = 0;
  210. numberY3 = rand()%tag_max3+tag_min3+1; // random tag for the index
  211.  
  212. unsigned int data_max3 = 429496729; // random data for the index
  213. int data_min3 = 0;
  214. numberZ3 = rand()%data_max3+data_min3+1;
  215.  
  216. way3 [numberX3][0] = 1;
  217. way3 [numberX3][1] = numberY3;
  218. way3 [numberX3][2] = numberZ3;
  219. }
  220.  
  221. int numberW4 = (rand()%max1+min1+1); // number of entires to populate level 2
  222.  
  223. for (k = 0; k <= numberW4; k++)
  224. {
  225. int index_max4 = r1;
  226. int index_min4 = 0;
  227.  
  228. numberX4 = rand()%index_max4+index_min4+1; // random index to use
  229.  
  230. int tag_max4 = 32768;
  231. int tag_min4 = 0;
  232. numberY4 = rand()%tag_max4+tag_min4+1; // random tag for the index
  233.  
  234. unsigned int data_max4 = 429496729; // random data for the index
  235. int data_min4 = 0;
  236. numberZ4 = rand()%data_max4+data_min4+1;
  237.  
  238. lev2 [numberX4][0] = 1;
  239. lev2 [numberX4][1] = numberY4;
  240. lev2 [numberX4][2] = numberZ4;
  241. }
  242.  
  243. armRes.open("C:\Users\Max\Documents\CSIT4\Project\Practice\ARMresults.txt", ios::out | ios::app );
  244.  
  245. for (t = 0; t<= 15000; t++)
  246. {
  247. int tag_value = rand()%32768+0+1;
  248.  
  249. for (s = 0; s <= r; s++)
  250. {
  251. block0 = way0 [s][1];
  252. block1 = way1 [s][1];
  253. block2 = way2 [s][1];
  254. block3 = way3 [s][1];
  255.  
  256. if (tag_value == block0)
  257. {
  258. armRes << "L1 Hit (Way 0) -- AT INDEX: " << s << endl;
  259. }
  260.  
  261. else if (tag_value == block1)
  262. {
  263. armRes << "L1 Hit (Way1) -- AT INDEX: " << s << endl;
  264. }
  265.  
  266. else if (tag_value == block2)
  267. {
  268. armRes << "L1 Hit (Way2) -- AT INDEX: " << s << endl;
  269. }
  270. else if (tag_value == block3)
  271. {
  272. armRes << "L1 Hit (Way3) -- AT INDEX: " << s << endl;
  273. }
  274.  
  275. else
  276. {
  277. for (v = 0; v <= r1; v++)
  278. {
  279. double levBlock = lev2 [v][1];
  280.  
  281. if (tag_value == levBlock)
  282. {
  283. armRes << "L2 Hit -- AT INDEX: " << v << endl;
  284. }
  285.  
  286. else
  287.  
  288. {
  289. armRes << "Cache Miss For Tag: " << tag_value << endl;
  290. }
  291. }
  292. }
  293. }
  294. }
  295.  
  296. armRes.close();
  297.  
  298. return 0;
  299.  
  300. }
  301.  
  302. double way0 [r][c]; //declaration of the arrays
  303. double way1 [r][c];
  304. double way2 [r][c];
  305. double way3 [r][c];
  306. double lev2[r1][c];
  307.  
  308. const int r = 8192;
  309. const int c = 3;
  310. const int r1 = 262144;
  311.  
  312. #include <vector>
  313. //...
  314. typedef std::vector<double> Double1D;
  315. typedef std::vector<Double1D> Double2D;
  316.  
  317. Double2D way0(r, Double1D(c));
  318. Double2D way1(r, Double1D(c));
  319. Double2D way2(r, Double1D(c));
  320. Double2D way3(r, Double1D(c));
  321. Double2D lev2(r1, Double1D(c));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement