Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- cache_size = 8 * 1024
- associativity = 1
- block_size = 32
- num_blocks = cache_size // block_size
- num_sets = cache_size // (block_size * associativity)
- misses = 0
- accesses = 0
- cache = [[-1 for x in range(associativity)] for y in range(num_sets)]
- def simulator(address):
- global misses
- global accesses
- block_offset = address % block_size
- index = (address // block_size) % num_sets
- tag = address // (block_size * num_sets)
- accesses += 1
- curr = cache[index]
- for i in range(len(curr)):
- if curr[i] == tag:
- curr.pop(i)
- curr.insert(0, tag)
- return
- curr.pop(len(curr) - 1)
- curr.insert(0, tag)
- misses += 1
- data_size = 8
- N = 64
- M = 4
- addressA = 0XFBDCE8
- for row in range(N):
- col = row
- while col < 64 - row:
- simulator(addressA + col * N * data_size + row * data_size)
- simulator(addressA + row * N * data_size + col * data_size)
- simulator(addressA + row * N * data_size + col * data_size)
- col+=1
- col = 64 - row
- while col < row:
- simulator(addressA + col * N * data_size + row * data_size)
- simulator(addressA + row * N * data_size + col * data_size)
- simulator(addressA + row * N * data_size + col * data_size)
- col+=1
- print (misses)
- print(accesses)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement