Advertisement
Guest User

Untitled

a guest
Jun 24th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.37 KB | None | 0 0
  1. import math
  2. class Cache:
  3.     tipmap = 0
  4.     conjunto = 0
  5.     quantlinhas = 0
  6.     npalavraslinha = 0
  7.     metodoescrita = 0
  8.     polsub = 0
  9.     trace = ""
  10.     index = ""
  11.     indexdef = ""
  12.     hit = 0
  13.     miss =0
  14.     barramento = 0
  15.     Vet = []
  16.     tag = ""
  17.     def tracoBinario(self):
  18.         '''transforma o trço de memória de hexadecimal para binário'''
  19.         self.trace = bin(int(self.trace,16))[2:].zfill(int(self.index))
  20.     def indexsize(self):
  21.         '''calcula o npumero de bits necessários para representar o index'''
  22.         self.index = math.log(self.quantlinhas, 2)
  23.     def makeIndexdef(self):
  24.         '''calcula o index do traço de memória'''
  25.         for i in range(int((len(self.trace)) - int(self.index) - 2)*4, (len(self.trace) - 3)*4, 1):
  26.             self.indexdef += self.trace[i]
  27.     def maketag(self):
  28.         for i in range(3, (len(self.trace)-int(self.index-3)*4)):
  29.             self.tag += self.trace[i]
  30.     def hitmiss(self):
  31.         '''calcula os hit e miss, além do número de acessos ao barramento'''
  32.         if self.tipmap == 0:
  33.             '''mapeamento direto'''
  34.             self.Vet = [self.quantlinhas]
  35.             self.makeIndexdef()
  36.             self.tracoBinario()
  37.             self.indexsize()
  38.             self.maketag()
  39.             while self.trace != "fim":
  40.                 if self.trace == 0:
  41.                     pass
  42.                 else:
  43.                     if self.trace[1] == "L":
  44.                         '''Carregamento de dados'''
  45.                         if not self.Vet[int(self.indexdef,2)]:
  46.                             self.miss += 1
  47.                             if self.polsub == 0:
  48.                                 self.barramento += 1
  49.                             self.Vet[int(self.indexdef, 2)] = self.tag
  50.                         else:
  51.                             if self.Vet[int(self.indexdef,2)] == self.tag:
  52.                                 self.hit +=1
  53.                             else:
  54.                                 self.miss+=1
  55.                                 self.Vet[int(self.indexdef,2)] = self.tag
  56.                     elif self.trace[1] == 'S':
  57.                         '''Armazenamento de dados'''
  58.                         if self.Vet[int(self.indexdef,2)]:
  59.                             self.barramento += 1
  60.                         self.Vet[int(self.indexdef, 2)] = self.tag
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement