public void setValue(Bloque bl)
 {
     for (int i = 0; i < 4; i++)
     {
         this.word[i].setValue(bl.word[i]);
     }
 }
Ejemplo n.º 2
0
 /*
  * Recordar que la memoria compartida de P0 es de 16 (0-15)
  * y la de P1 es de 8 (16-23).
  */
 public SharedMemory(int sizeMem, Processor prnt)
 {
     parent = prnt;
     shMem  = new Bloque[sizeMem];
     for (int i = 0; i < sizeMem; i++)
     {
         shMem[i] = new Bloque(Computer.block_size);
     }
 }
Ejemplo n.º 3
0
 //Constructor
 public InstructionMemory(int sizeMem)
 {
     mem = new Bloque[sizeMem];
     for (int i = 0; i < sizeMem; i++)
     {
         mem[i] = new Bloque(4);
     }
     lastBlock = 0;
     lastInstr = 0;
 }
Ejemplo n.º 4
0
                public void miss(int program_counter, Core c)
                {
                    int    dirBloque = program_counter / (Computer.block_size * 4);
                    Bloque blk       = c.parent.isntrmem.getBloque(dirBloque);

                    int dirBloqueCache = dirBloque % 4;

                    instrsInCache[dirBloqueCache]  = blk;
                    labelsOfInstrs[dirBloqueCache] = dirBloque;

                    //instrsInCache
                    //c.parent.isntrmem.
                }
Ejemplo n.º 5
0
                public InstructionCache(int cacheSize)
                {
                    instrsInCache  = new Bloque[cacheSize];
                    labelsOfInstrs = new int[cacheSize];

                    /*
                     * Inicializa las 4 Instrucciones (16 enteros) con 0s.
                     * Inicializa las etiquetas de las 4 Instrucciones en direcciones no existentes (-1).
                     */
                    for (int i = 0; i < cacheSize; i++)
                    {
                        instrsInCache[i] = new Bloque(Computer.block_size);
                        //llena todos las instrucciones de los bloques con -1
                        instrsInCache[i].generateErrorBloque();
                        labelsOfInstrs[i] = -1;
                    }
                } // EO constr
Ejemplo n.º 6
0
                public DataCache(int cacheSize)
                {
                    instrsInCache  = new Bloque[cacheSize];
                    labelsOfInstrs = new int[cacheSize];
                    statesOfInstrs = new states[cacheSize];

                    /*
                     * Inicializa los 4 Bloques con 0s.
                     * Inicializa los estados en Invalidos (I).
                     * Inicializa las etiquetas de los 4 Bloques en direcciones no existentes (-1).
                     */
                    for (int i = 0; i < cacheSize; i++)
                    {
                        instrsInCache[i]  = new Bloque(Computer.block_size);
                        statesOfInstrs[i] = states.invalid;
                        labelsOfInstrs[i] = -1;
                    }
                } // EO constructor
Ejemplo n.º 7
0
            public Bloque getBloque(int numBloque)
            {
                Bloque returnBloque = new Bloque(Computer.block_size);

                if (parent.id == 0 && numBloque < 16)
                {
                    returnBloque.setValue(shMem[numBloque]);
                }
                if (parent.id == 1 && numBloque >= 16)
                {
                    returnBloque.setValue(shMem[numBloque - 16]);
                }
                if ((parent.id == 0 && numBloque >= 16) || (parent.id == 1 && numBloque < 16))
                {
                    Console.WriteLine("The Block " + numBloque + " does not belong to the shared memory of processor " + parent.id + ".");
                    returnBloque.generateErrorBloque();
                }
                return(returnBloque);
            }
Ejemplo n.º 8
0
            public bool insertBloque(int numBloque, Bloque block)
            {
                bool inserted = false;

                if (parent.id == 0 && numBloque < 16)
                {
                    shMem[numBloque].setValue(block);
                    inserted = true;
                }
                if (parent.id == 1 && numBloque >= 16)
                {
                    shMem[numBloque - 16].setValue(block);
                    inserted = true;
                }
                if ((parent.id == 0 && numBloque >= 16) || (parent.id == 1 && numBloque < 16))
                {
                    Console.WriteLine("The Block " + numBloque + " does not belong to the shared memory of processor " + parent.id + ".");
                }
                return(inserted);
            }