sector_tags.cc (13752:135bb759ee9c) sector_tags.cc (13938:14f80b6b37c1)
1/*
2 * Copyright (c) 2018 Inria
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 38 unchanged lines hidden (view full) ---

47#include "mem/cache/replacement_policies/replaceable_entry.hh"
48#include "mem/cache/tags/indexing_policies/base.hh"
49
50SectorTags::SectorTags(const SectorTagsParams *p)
51 : BaseTags(p), allocAssoc(p->assoc),
52 sequentialAccess(p->sequential_access),
53 replacementPolicy(p->replacement_policy),
54 numBlocksPerSector(p->num_blocks_per_sector),
1/*
2 * Copyright (c) 2018 Inria
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 38 unchanged lines hidden (view full) ---

47#include "mem/cache/replacement_policies/replaceable_entry.hh"
48#include "mem/cache/tags/indexing_policies/base.hh"
49
50SectorTags::SectorTags(const SectorTagsParams *p)
51 : BaseTags(p), allocAssoc(p->assoc),
52 sequentialAccess(p->sequential_access),
53 replacementPolicy(p->replacement_policy),
54 numBlocksPerSector(p->num_blocks_per_sector),
55 numSectors(numBlocks / p->num_blocks_per_sector), blks(numBlocks),
56 secBlks(numSectors), sectorShift(floorLog2(blkSize)),
57 sectorMask(numBlocksPerSector - 1)
55 numSectors(numBlocks / numBlocksPerSector),
56 sectorShift(floorLog2(blkSize)), sectorMask(numBlocksPerSector - 1)
58{
59 // Check parameters
60 fatal_if(blkSize < 4 || !isPowerOf2(blkSize),
61 "Block size must be at least 4 and a power of 2");
62 fatal_if(!isPowerOf2(numBlocksPerSector),
63 "# of blocks per sector must be non-zero and a power of 2");
64}
65
66void
67SectorTags::tagsInit()
68{
57{
58 // Check parameters
59 fatal_if(blkSize < 4 || !isPowerOf2(blkSize),
60 "Block size must be at least 4 and a power of 2");
61 fatal_if(!isPowerOf2(numBlocksPerSector),
62 "# of blocks per sector must be non-zero and a power of 2");
63}
64
65void
66SectorTags::tagsInit()
67{
68 // Create blocks and sector blocks
69 blks = std::vector<SectorSubBlk>(numBlocks);
70 secBlks = std::vector<SectorBlk>(numSectors);
71
69 // Initialize all blocks
70 unsigned blk_index = 0; // index into blks array
71 for (unsigned sec_blk_index = 0; sec_blk_index < numSectors;
72 sec_blk_index++)
73 {
74 // Locate next cache sector
75 SectorBlk* sec_blk = &secBlks[sec_blk_index];
76

--- 232 unchanged lines hidden ---
72 // Initialize all blocks
73 unsigned blk_index = 0; // index into blks array
74 for (unsigned sec_blk_index = 0; sec_blk_index < numSectors;
75 sec_blk_index++)
76 {
77 // Locate next cache sector
78 SectorBlk* sec_blk = &secBlks[sec_blk_index];
79

--- 232 unchanged lines hidden ---