Guest User

Untitled

a guest
Jan 19th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.65 KB | None | 0 0
  1. const int index = 16348;
  2. const int way = 4;
  3.  
  4. struct cache
  5. {
  6.     int tag[4];
  7.     int index[4];
  8.     int LRU[4];
  9.     int mesiState[4];
  10. } L2;
  11.  
  12.  
  13.  
  14.  
  15. void mesiOperation(struct L2 inL2 , bool transactionIN, bool cpuReadIN, bool cacheHitIN)
  16. {
  17.     bool MemoryRead = false;
  18.     bool RFO = false;
  19.     bool WriteBack = false;
  20.  
  21.     if(transactionIN == true)                                               //Cache Controller of Processor Accessing Memory
  22.     {
  23.         switch(inL2.mesiState)
  24.         {
  25.         case 0: // Invalidate
  26.             if(cpuReadIN == true && cacheHitIN == true)
  27.             {
  28.                 MemoryRead = true;
  29.                 RFO = false;
  30.                 WriteBack = false;
  31.                 inL2.mesiState = 2;
  32.             }
  33.             else if(cpuReadIN == true && cacheHitIN == false)
  34.             {
  35.                 MemoryRead = true;
  36.                 RFO = false;
  37.                 WriteBack = false;
  38.                 mesiState = 1;
  39.             }
  40.             else if(cpuReadIN == false)
  41.             {
  42.                 MemoryRead = false;
  43.                 RFO = true;
  44.                 WriteBack = false;
  45.                 mesiState = 3;
  46.             }
  47.             else
  48.             {
  49.                 MemoryRead = false;
  50.                 RFO = false;
  51.                 WriteBack = false;
  52.                 mesiState = 0;
  53.             }
  54.         break;
  55.  
  56.         case 1: // Exclusive
  57.             if(cpuReadIN == true)
  58.             {
  59.                 MemoryRead = false;
  60.                 RFO = false;
  61.                 WriteBack = false;
  62.                 mesiState = 1;
  63.             }
  64.             else
  65.             {
  66.                 MemoryRead = false;
  67.                 RFO = false;
  68.                 WriteBack = false;
  69.                 mesiState = 3;
  70.             }
  71.         break;
  72.  
  73.         case 2: // Shared
  74.             if(cpuReadIN == true)
  75.             {
  76.                 MemoryRead = false;
  77.                 RFO = false;
  78.                 WriteBack = false;
  79.                 mesiState = 2;
  80.             }
  81.             else
  82.             {
  83.                 MemoryRead = false;
  84.                 RFO = true;
  85.                 WriteBack = false;
  86.                 mesiState = 3;
  87.             }
  88.         break;
  89.  
  90.         case 3: // Modified
  91.             {
  92.                 MemoryRead = false;
  93.                 RFO = true;
  94.                 WriteBack = false;
  95.                 mesiState = 3;
  96.             }
  97.         break;         
  98.         }
  99.     }
Add Comment
Please, Sign In to add comment