public Cache(int l_size) {
        
        this.Size = l_size;
    
       /** BLOCK CONTENT **
        * First 1 Bit Dirty Bit, 1  Valid Bit, 3 bits Index, 2 bits offset, 13 bit TAG, 4*20 word
        * 1+1+3+2+13+80=100 bits 
        * 0: VALID BIT:
        * 1: DIRTY BIT:     CHECK IF THE BLOCK UPDATED
        * 2-4 INDEX BITS:   NOT USED SINCE WE DO NOT USE SET 
        * 5-6 OFFSET BITS:  SELECT THE WORD ON THE BLOCK
        * 7-19 TAG:         ADDRESS OF THE FIRST WORD ON THE BLOCK
        * 20-39 WORD 1      CONTENT OF THE FIRST WORD
        * 40-59 WORD 2      CONTENT OF THE SECOND WORD
        * 60-79 WORD 3      CONTENT OF THE THIRD WORD
        * 80-99 WORD 4      CONTENT OF THE FOURTH WORD
        */
        CACHE_DATA = new int[this.Size][100];
       
       //This register is used to save data temporarily on Read-Miss 
       WriteBuffer = new Register("WB", 100, false);
          
    }