def __init__(self, barramento, tamanho, log=LogNone()): super(Memoria, self).__init__(name="Memoria") self.log = log self.tamanho_informado = tamanho if tamanho > 35: MemoryError("limite de memoria excedido (32GB ou 32*2**30)") if tamanho < Consts.MEMORIA_X_MIN: tamanho = Consts.MEMORIA_X_MIN log.write_line( 'tamanho de memoria muito pequeno, o tamanho minimo foi escolhido' ) elif tamanho > Consts.MEMORIA_X_MAX: tamanho = Consts.MEMORIA_X_MAX # log.write_line('tamanho de memoria muito grande, o tamanho maximo foi escolhido') self.tamanho = 32 * (2**tamanho) codeslice = Consts.get_memoria_code_sliced(self.tamanho) self.code_slice = codeslice - (codeslice % Consts.CODE_SIZE) self.tamanho_total_valores = ( 32 * (2**self.tamanho_informado)) - self.code_slice self.memoria = [0 for i in range(self.tamanho)] self.sinais = Queue() self.dado = None self.barramento = barramento self.esperando_entrada = False
def __init__(self, tamanho_memoria, atualizar, log=LogNone()): self.log = log self.tamanho_memoria = tamanho_memoria self.atualizar = atualizar if Consts.CACHE_TAX > Consts.CACHE_TAX_MAX: Consts.CACHE_TAX = Consts.MEMORIA_X_MAX log.write_line( 'taxa maxima do cache excedida, tamanho maximo escolhido') elif Consts.CACHE_TAX < Consts.CACHE_TAX_MIN: Consts.CACHE_TAX = Consts.CACHE_TAX_MIN log.write_line( 'taxa minima do cache excedida, tamanho minimo escolhido') self.tamanho = int(Consts.CACHE_TAX * tamanho_memoria) self.cache_dict = {} self.in_dict = 0 self.hit = 0 self.miss = 0 self.cooldown = Consts.CACHE_COOLDOWN self.dict_lock = threading.Lock() self.cooldown_thread = threading.Thread(target=self.checar_cooldown, name="Cooldown") self.cooldown_thread.start()
def __init__(self, barramento, path=Consts.defaultPath, log=LogNone()): super(Entrada, self).__init__(name="Entrada") self.log = log self.barramento = barramento self.bufferReader = BufferReader(path) self.sinais = Queue() self.endereco = None
def __init__(self, log=LogNone(), logi=LogNone()): super(Barramento, self).__init__(name="Barramento") self.log = log self.logi = logi self.sinalLock = threading.Lock() self.fila_sinal = [] self.sinal_bytes = 0 self.enderecoLock = threading.Lock() self.fila_endereco = [] self.enderecos_bytes = 0 self.dadosLock = threading.Lock() self.fila_dados = [] self.dados_bytes = 0 self.tempo_de_inicio = 0
def __init__(self, barramento, tamanho_ram, log=LogNone()): super(Cpu, self).__init__(name="Cpu") self.log = log self.registradores = {"A": 0, "B": 0, "C": 0, "D": 0, "CI": 0} self.barramento = barramento self.passo = Cpu.PASSO_SINAL self.tipoSinal = Consts.T_L_INSTRUCAO self.endereco = None self.dado = None self.loops = [] if Consts.CACHE_SELECTOR == 1: self.cache = CacheLRU(tamanho_ram, self.atualizar) elif Consts.CACHE_SELECTOR == 2: self.cache = CacheLFU(tamanho_ram, self.atualizar) elif Consts.CACHE_SELECTOR == 3: self.cache = CacheCoolDown(tamanho_ram, self.atualizar)
def __init__(self, tamanho_memoria, atualizar, log=LogNone()): self.log = log self.tamanho_memoria = tamanho_memoria self.atualizar = atualizar if Consts.CACHE_TAX > Consts.CACHE_TAX_MAX: Consts.CACHE_TAX = Consts.MEMORIA_X_MAX log.write_line( 'taxa maxima do cache excedida, tamanho maximo escolhido') elif Consts.CACHE_TAX < Consts.CACHE_TAX_MIN: Consts.CACHE_TAX = Consts.CACHE_TAX_MIN log.write_line( 'taxa minima do cache excedida, tamanho minimo escolhido') self.tamanho = int(Consts.CACHE_TAX * tamanho_memoria) self.cache_dict = {} self.in_dict = 0 self.hit = 0 self.miss = 0