Project

General

Profile

Bug #6478

java.lang.IllegalStateException: Multiple hits in a cache set

Added by Alexander Kamkin over 4 years ago. Updated over 4 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Andrei Tatarnikov
Category:
-
Target version:
Start date:
12/08/2015
Due date:
% Done:

100%

Estimated time:
Detected in build:
svn
Platform:
Published in build:
2.3.14

Description

java.lang.IllegalStateException: Multiple hits in a cache set
    at ru.ispras.microtesk.mmu.model.api.Set.getLine(ru/ispras/microtesk/mmu/model/api/Set.java:106)
    at ru.ispras.microtesk.mmu.model.api.Set.isHit(ru/ispras/microtesk/mmu/model/api/Set.java:70)
    at ru.ispras.microtesk.mmu.model.api.Set.isHit(ru/ispras/microtesk/mmu/model/api/Set.java:32)
    at ru.ispras.microtesk.mmu.model.api.RegisterMapping.isHit(ru/ispras/microtesk/mmu/model/api/RegisterMapping.java:158)
    at ru.ispras.microtesk.mmu.model.api.Mmu.load(ru/ispras/microtesk/mmu/model/api/Mmu.java:45)
    at ru.ispras.microtesk.model.api.memory.PhysicalMemory$PhysicalMemoryAtom.load(ru/ispras/microtesk/model/api/memory/PhysicalMemory.java:195)
    at ru.ispras.microtesk.model.api.memory.Location.readData(ru/ispras/microtesk/model/api/memory/Location.java:381)
    at ru.ispras.microtesk.model.api.memory.Location.load(ru/ispras/microtesk/model/api/memory/Location.java:223)
    at ru.ispras.microtesk.model.api.instruction.InstructionCall.execute(ru/ispras/microtesk/model/api/instruction/InstructionCall.java:63)
    at ru.ispras.microtesk.test.template.ConcreteCall.execute(ru/ispras/microtesk/test/template/ConcreteCall.java:167)
    at ru.ispras.microtesk.test.Executor.executeSequence(ru/ispras/microtesk/test/Executor.java:168)
    at ru.ispras.microtesk.test.TestEngine$TemplateProcessor.sandboxExecution(ru/ispras/microtesk/test/TestEngine.java:548)
    at ru.ispras.microtesk.test.TestEngine$TemplateProcessor.processBlock(ru/ispras/microtesk/test/TestEngine.java:455)
    at ru.ispras.microtesk.test.TestEngine$TemplateProcessor.process(ru/ispras/microtesk/test/TestEngine.java:339)
    at ru.ispras.microtesk.test.template.Template.processBlock(ru/ispras/microtesk/test/template/Template.java:143)
    at ru.ispras.microtesk.test.template.Template.access$400(ru/ispras/microtesk/test/template/Template.java:44)
    at ru.ispras.microtesk.test.template.Template$BlockHolder.run(ru/ispras/microtesk/test/template/Template.java:356)
    at java.lang.reflect.Method.invoke(java/lang/reflect/Method.java:606)
    at RUBY.run(F:/TOOLS/microtesk/arch/k64/templates/load_store.rb:54)
    at RUBY.generate(F:/TOOLS/microtesk/lib/ruby/template.rb:805)
    at RUBY.main(F:/TOOLS/microtesk/lib/ruby/microtesk.rb:35)
    at org.jruby.RubyHash.each(org/jruby/RubyHash.java:1342)
    at RUBY.main(F:/TOOLS/microtesk/lib/ruby/microtesk.rb:31)
    at RUBY.(root)(F:/TOOLS/microtesk/lib/ruby/microtesk.rb:54)
    at ru.ispras.microtesk.test.TestEngine.generate(ru/ispras/microtesk/test/TestEngine.java:153)
    at ru.ispras.microtesk.MicroTESK.generate(ru/ispras/microtesk/MicroTESK.java:287)
    at ru.ispras.microtesk.MicroTESK.main(ru/ispras/microtesk/MicroTESK.java:73)

History

#1

Updated by Andrei Tatarnikov over 4 years ago

  • Status changed from New to Resolved

Multiple hits. You need to make sure that buffer state is valid. Use the isHit method of a buffer (implemented by BufferObserver which is provided by MmuModel). MmuModel can be accessed using the MmuPlugin.getModel method.

public final class MmuPlugin implements Plugin {
  ...

  public static MmuModel getModel() {
    ...
  }
  ...
} 
public interface MmuModel {
  BufferObserver getBufferObserver(String bufferId);
  MemoryDevice getMmuDevice();
  String getStorageDeviceId();
  void setStorageDevice(MemoryDevice device);
}
public interface BufferObserver {
  /**
   * Checks whether the given address causes a hit.
   * 
   * @param address Address to be checked.
   * @return {@code true} if the address causes a hit; {@code false} otherwise.
   */

  boolean isHit(BitVector address);
}

Feature is made available in r5718.

#2

Updated by Andrei Tatarnikov over 4 years ago

  • Status changed from Resolved to Closed
  • % Done changed from 0 to 100
  • Published in build set to 2.3.14

Also available in: Atom PDF