Meta tags:
Headings (most frequently used words):
cache, in, policies, associative, multi, first, microprocessors, cpu, history, operation, two, way, example, and, caches, write, instruction, versus, contents, overview, associativity, entry, structure, miss, address, translation, hierarchy, modern, processor, implementation, see, also, notes, references, external, links, entries, performance, direct, mapped, set, speculative, execution, skewed, pseudo, multicolumn, flag, bits, homonym, synonym, problems, virtual, tags, hints, page, coloring, specialized, level, scratchpad, memory, the, k8, more, hierarchies, tag, ram, ported, replacement, stalls, victim, trace, coalescing, wcc, micro, μop, or, uop, branch, target, smart, core, chips, separate, unified, exclusive, inclusive, tlb, implementations, data, 68k, x86, arm, current, research,
Text of the page (most frequently used words):
the (933), cache (604), and (288), #memory (176), for (145), data (125), #caches (110), with (107), that (103), from (100), address (90), virtual (89), are (84), which (79), instruction (77), this (70), have (67), can (66), cpu (62), associative (62), processor (60), main (60), physical (59), way (58), edit (58), one (58), used (57), level (55), has (54), set (53), not (49), intel (48), tag (45), core (44), performance (43), two (42), each (41), bits (39), bit (38), instructions (37), access (36), retrieved (35), tlb (35), also (35), read (35), system (34), index (33), pdf (32), kib (32), may (31), was (31), chip (31), write (31), there (31), some (31), page (30), entry (30), but (30), into (28), time (28), location (28), more (28), than (28), use (27), computer (27), size (27), processors (27), only (27), tags (27), other (26), when (26), ibm (25), mapped (25), first (25), miss (25), line (25), all (24), different (24), unit (24), multi (24), larger (24), same (23), pages (23), block (23), high (22), direct (22), power (21), architecture (21), been (21), original (21), speed (21), addresses (21), mib (21), both (21), blocks (21), hierarchy (20), archived (20), number (20), per (19), between (19), latency (19), because (19), however (19), hardware (18), its (18), associativity (18), micro (18), most (18), any (18), lines (18), hit (18), cores (18), cpus (17), branch (17), translation (17), shared (17), they (17), multiple (17), design (16), register (16), store (16), doi (16), operation (16), amd (16), were (16), much (16), virtually (16), then (16), locations (16), program (15), systems (15), article (15), sram (15), does (15), fetch (15), indexed (15), entries (15), misses (15), policy (14), processing (14), four (14), possible (14), space (14), physically (14), such (14), usually (14), generally (14), called (14), replacement (13), policies (13), single (13), execution (13), machine (13), another (13), part (13), 2013 (13), operating (13), had (13), levels (13), early (13), these (13), faster (13), byte (13), since (13), tagged (13), must (13), will (13), mapping (13), buffer (12), pipeline (12), stored (12), based (12), trace (12), pentium (12), large (12), example (12), least (12), before (12), those (12), table (11), value (11), rate (11), 128 (11), microarchitecture (11), caching (11), very (11), inclusive (11), well (11), fast (11), see (11), where (11), area (11), microprocessors (11), die (11), motherboard (11), split (11), need (11), separate (11), cached (11), μop (11), available (10), microprocessor (10), management (10), mmu (10), low (10), order (10), 360 (10), arm (10), conflict (10), 2012 (10), 2014 (10), small (10), new (10), major (10), would (10), ram (10), through (10), sizes (10), victim (10), after (10), eight (10), modern (10), having (10), thus (10), implemented (10), decoded (10), using (9), non (9), model (9), history (9), 256 (9), several (9), times (9), international (9), 1990 (9), exclusive (9), information (9), case (9), designs (9), advantage (9), slower (9), either (9), above (9), typically (9), ways (9), keep (9), copies (9), copy (9), smaller (9), require (9), many (9), toggle (8), computing (8), control (8), target (8), bus (8), scratchpad (8), cycle (8), secondary (8), 2009 (8), symposium (8), software (8), work (8), cost (8), skewed (8), stores (8), fetched (8), edram (8), common (8), their (8), hints (8), hint (8), although (8), simple (8), like (8), unified (8), accesses (8), rather (8), specialized (8), include (8), coloring (8), problem (8), multicolumn (8), contents (7), wikipedia (7), cs1 (7), 2010 (7), 2008 (7), deprecated (7), service (7), general (7), dynamic (7), application (7), package (7), types (7), second (7), x86 (7), external (7), 1109 (7), proceedings (7), conference (7), 2020 (7), 1145 (7), problems (7), isbn (7), 2015 (7), cite (7), anandtech (7), 2001 (7), length (7), september (7), uses (7), given (7), allows (7), important (7), just (7), dram (7), three (7), bytes (7), while (7), path (7), few (7), function (7), evicted (7), fewer (7), known (7), become (7), color (7), colors (7), tagging (7), requires (7), offset (7), valid (7), flag (7), code (6), last (6), december (6), 2023 (6), org (6), module (6), clock (6), integrated (6), decoder (6), registers (6), predictor (6), load (6), coherence (6), graphics (6), operations (6), cycles (6), prediction (6), random (6), written (6), november (6), ieee (6), s2cid (6), smart (6), haswell (6), fully (6), gap (6), tlbs (6), help (6), total (6), placement (6), effectively (6), recently (6), still (6), significant (6), form (6), extra (6), taken (6), programs (6), needed (6), later (6), determine (6), requested (6), often (6), until (6), whether (6), among (6), map (6), simpler (6), structure (6), run (6), longer (6), hold (6), makes (6), delay (6), particular (6), selected (6), lower (6), below (6), back (6), hash (6), dirty (6), log (6), due (6), subsection (6), search (5), links (5), articles (5), march (5), maint (5), archival (5), central (5), quantum (5), file (5), logic (5), lookaside (5), variable (5), word (5), thread (5), wide (5), issue (5), out (5), risc (5), alpha (5), mips (5), sets (5), turing (5), what (5), 2003 (5), family (5), solutions (5), parallel (5), com (5), introduction (5), link (5), pro (5), 978 (5), bridge (5), atlas (5), over (5), technology (5), reduced (5), llc (5), fetching (5), instead (5), added (5), iii (5), board (5), next (5), implementation (5), being (5), rates (5), could (5), improve (5), right (5), released (5), following (5), provided (5), done (5), various (5), associated (5), checking (5), checked (5), make (5), takes (5), means (5), result (5), better (5), ptes (5), storing (5), allow (5), match (5), get (5), patterns (5), full (5), needs (5), reduce (5), aliases (5), existing (5), vipt (5), contains (5), pseudo (5), evict (5), about (4), additional (4), terms (4), august (4), statements (4), short (4), security (4), electronics (4), purpose (4), signal (4), functional (4), magnitude (4), pipelined (4), speculative (4), process (4), scalar (4), isa (4), itanium (4), sparc (4), series (4), automaton (4), technologies (4), flushing (4), 2004 (4), reference (4), acm (4), xeon (4), 1968 (4), october (4), cortex (4), 2007 (4), hierarchies (4), advanced (4), techniques (4), web (4), iris (4), 2011 (4), 2016 (4), frontend (4), david (4), decode (4), uop (4), optimization (4), zhang (4), slice (4), scheme (4), predicting (4), fact (4), approach (4), works (4), tables (4), every (4), ported (4), accessing (4), benefit (4), tools (4), energy (4), recent (4), current (4), depending (4), type (4), unusually (4), introduced (4), dynamically (4), became (4), included (4), directly (4), chips (4), loop (4), special (4), implementations (4), complex (4), fastest (4), might (4), similar (4), against (4), compared (4), reads (4), diagram (4), indexing (4), reading (4), higher (4), content (4), keeps (4), ensure (4), coherency (4), predictors (4), kinds (4), parity (4), effective (4), maps (4), athlon (4), comparable (4), hits (4), versus (4), highest (4), increasing (4), accessed (4), reducing (4), complexity (4), protocols (4), amount (4), off (4), examples (4), actual (4), without (4), avoiding (4), wcc (4), writes (4), already (4), guarantee (4), alternatively (4), changes (4), mappings (4), difficult (4), within (4), differences (4), best (4), aliasing (4), less (4), hide (4), move (4), sidebar (4), mobile (3), view (3), organization (3), long (3), unsourced (3), array (3), digital (3), related (3), frequency (3), switch (3), sum (3), addressed (3), adder (3), counter (3), sequential (3), controller (3), point (3), generation (3), others (3), 512 (3), network (3), gpu (3), multiprocessor (3), embedded (3), vector (3), updates (3), simultaneous (3), algorithm (3), false (3), sharing (3), stall (3), dec (3), comparison (3), edge (3), specific (3), storage (3), cellular (3), machines (3), queue (3), review (3), updated (3), simulation (3), smith (3), introduces (3), capacity (3), annual (3), product (3), world (3), james (3), overview (3), 486 (3), corporation (3), microcomputer (3), 2nd (3), characteristics (3), joint (3), third (3), february (3), 645 (3), manual (3), technical (3), analysis (3), usa (3), jouppi (3), norman (3), sigarch (3), news (3), tested (3), 2006 (3), april (3), 2018 (3), how (3), real (3), bulldozer (3), programmers (3), compiler (3), buffers (3), 2024 (3), lake (3), multicore (3), computers (3), john (3), selection (3), shown (3), advantages (3), conventional (3), consumption (3), atom (3), 1976 (3), memories (3), intended (3), idea (3), placed (3), loops (3), 2021 (3), simulator (3), algorithms (3), request (3), efficiency (3), apple (3), feature (3), uncommon (3), find (3), took (3), slightly (3), mhz (3), located (3), devices (3), 68k (3), documented (3), especially (3), found (3), smallest (3), largest (3), subset (3), occurred (3), rows (3), pair (3), simplest (3), select (3), sometimes (3), loaded (3), even (3), making (3), addressable (3), coherent (3), ecc (3), predict (3), branches (3), them (3), banks (3), sections (3), ten (3), always (3), local (3), instance (3), intermediate (3), present (3), certain (3), should (3), cray (3), itself (3), down (3), l1i (3), holds (3), providing (3), required (3), traces (3), fixed (3), decreasing (3), coalescing (3), points (3), technique (3), during (3), likely (3), pattern (3), lead (3), necessary (3), described (3), flushed (3), changed (3), becomes (3), solved (3), writing (3), synonym (3), homonym (3), historically (3), lookup (3), choice (3), r6000 (3), looked (3), vivt (3), refer (3), context (3), implement (3), comparing (3), cause (3), continue (3), invalid (3), stale (3), row (3), closer (3), lru (3), transistors (3), places (3), doubling (3), choose (3), waiting (3), stalls (3), checks (3), exception (3), settle (3), topic (2), languages (2), contact (2), privacy (2), wikimedia (2), commons (2), categories (2), wayback (2), disputed (2), accuracy (2), description (2), wikidata (2), pin (2), semiconductor (2), device (2), ppw (2), watt (2), voltage (2), scaling (2), circuit (2), circuitry (2), barrel (2), shifter (2), datapath (2), stack (2), gate (2), floating (2), fifo (2), heterogeneous (2), count (2), slicing (2), image (2), coprocessor (2), stream (2), transistor (2), temporal (2), multithreading (2), task (2), pipelining (2), parallelism (2), renaming (2), structural (2), hazards (2), classic (2), visc (2), motorola (2), addressing (2), architectures (2), finite (2), state (2), models (2), lecture (2), power4 (2), understanding (2), introductory (2), 2002 (2), hill (2), paper (2), results (2), benchmarks (2), net (2), describing (2), cacti (2), foster (2), chen (2), june (2), a22 (2), 6916 (2), 1964 (2), 6600 (2), 1999 (2), bottleneck (2), 123 (2), hotchips (2), cluster (2), tian (2), 5200 (2), 4950hq (2), difference (2), leon (2), cutress (2), ian (2), zen (2), shimpi (2), anand (2), lal (2), islped (2), aware (2), kanter (2), sandy (2), continued (2), agner (2), guide (2), ghz (2), skylake (2), desktop (2), products (2), formerly (2), improving (2), 17th (2), isca (2), jiang (2), lin (2), xiaodong (2), george (2), mechanism (2), journal (2), citeseerx (2), vol (2), 1962 (2), ifip (2), congress (2), patterson (2), hennessy (2), interface (2), choosing (2), error (2), protection (2), patents (2), justia (2), patent (2), issued (2), 1994 (2), reconfigurable (2), 1997 (2), schemes (2), ryan (2), codenamed (2), ivy (2), networks (2), z13 (2), throughput (2), 1982 (2), developed (2), cambridge (2), sequence (2), slave (2), give (2), effect (2), communication (2), references (2), notes (2), allocation (2), locality (2), serve (2), traditional (2), normally (2), whereas (2), connected (2), entirely (2), average (2), consider (2), research (2), 192 (2), laptop (2), variant (2), serves (2), crystalwell (2), again (2), tens (2), popularity (2), socket (2), obsolete (2), began (2), onto (2), sockets (2), made (2), growing (2), versions (2), 386 (2), amounts (2), expensive (2), around (2), left (2), 68040 (2), 68020 (2), mode (2), considered (2), tiny (2), replaced (2), true (2), 1980s (2), introduce (2), price (2), closely (2), semi (2), conductor (2), mainframe (2), 1960s (2), flat (2), extensive (2), values (2), depend (2), greatly (2), needing (2), citation (2), decoders (2), hinted (2), width (2), recurrence (2), translated (2), finally (2), srams (2), shows (2), matching (2), calculated (2), portion (2), retired (2), tends (2), sensitive (2), great (2), silicon (2), currently (2), change (2), guaranteed (2), terminology (2), primary (2), never (2), fill (2), keeping (2), translate (2), marking (2), date (2), specialization (2), here (2), reduces (2), strictly (2), check (2), together (2), disadvantage (2), whenever (2), corresponding (2), quite (2), name (2), separately (2), meaning (2), benefits (2), including (2), ranges (2), independently (2), resulting (2), reasons (2), allowing (2), share (2), question (2), implementing (2), files (2), did (2), end (2), scheduled (2), allocates (2), nest (2), phenom (2), features (2), along (2), returned (2), cases (2), replacing (2), fundamental (2), tradeoff (2), operate (2), dedicated (2), equal (2), method (2), powered (2), delivering (2), enough (2), causing (2), created (2), heuristic (2), l1d (2), basic (2), extreme (2), commonly (2), property (2), role (2), server (2), probes (2), mentioned (2), 6000 (2), attempt (2), assign (2), simply (2), extremely (2), collide (2), arrange (2), literature (2), community (2), cannot (2), consistent (2), timing (2), perhaps (2), suffers (2), determining (2), alternate (2), matches (2), distinguish (2), simultaneously (2), perfect (2), proceed (2), allowed (2), inconsistent (2), overlapping (2), spaces (2), now (2), tend (2), pipt (2), homonyms (2), designed (2), exist (2), potential (2), additionally (2), avoids (2), slow (2), divided (2), held (2), running (2), cut (2), dependent (2), measurement (2), indicates (2), marked (2), implies (2), field (2), hence (2), displaystyle (2), lceil (2), rceil (2), ratio (2), contributes (2), conflicts (2), tests (2), something (2), good (2), suffer (2), hand (2), unpredictable (2), acts (2), free (2), place (2), execute (2), independent (2), waits (2), hundreds (2), able (2), steps (2), immediately (2), rarely (2), future (2), contain (2), copied (2), etc (2), static (2), executable (2), step (2), appearance (2), upload (2), create (2), account (2), donate (2), menu (2), add, cookie, statement, statistics, developers, conduct, legal, safety, contacts, disclaimers, text, under, apply, site, you, agree, registered, trademark, profit, foundation, inc, creative, attribution, sharealike, license, rendered, parsoid, edited, 2026, utc, hidden, webarchive, template, volume, disputes, errors, parameters, https, php, title, cpu_cache, oldid, 1372368516, carrier, grid, tick, tock, fabrication, chronology, gating, acpi, apm, pmu, analog, boolean, mixed, binary, multiplier, demultiplexer, multiplexer, rom, microcode, hardwired, status, glue, combinational, imc, fpu, agu, alu, arithmetic, units, components, manycore, baseband, secure, cryptoprocessor, tpu, tensor, dsp, ppu, physics, vpu, vision, accelerator, accelerators, noc, cypress, psoc, mpsoc, soc, soft, asip, ultra, microcontroller, pop, sip, mcm, cpld, fpoa, fpga, asic, pal, tile, gpgpu, orders, metrics, sups, synaptic, tps, transactions, flops, ips, ipc, cpi, spmd, mimd, misd, swar, simt, simd, sisd, flynn, taxonomy, cooperative, preemptive, heterogenous, hyperthreading, distributed, superscalar, serial, dependence, reservation, station, tomasulo, scoreboarding, dependency, operand, forwarding, epiphany, tilera, 3x0, 390, 370, lmc, microblaze, openrisc, unicore, m32r, etrax, cris, superh, clipper, powerpc, stanford, pdp, vax, 68000, modes, zisc, nisc, oisc, misc, epic, vliw, trips, cisc, orthogonal, neuromorphic, cognitive, multiprocessing, fabric, huma, numa, endianness, transport, triggered, dataflow, modified, harvard, von, neumann, pointer, belt, zeno, hypercomputation, probabilistic, nondeterministic, post, universal, alternating, deterministic, hierarchical, abstract, fallacy, princeton, university, ixbtlabs, pavel, danilov, ars, technica, jon, stokes, vhdl, paul, genua, freescale, primer, ruud, van, der, pas, sun, microsystems, cantin, thorough, lucidly, presented, reasonably, organizations, spec, cpu2000, 1989, compulsory, classification, evaluating, lwn, ulrich, drepper, detail, wikibook, labs, wang, zhenghong, lee, ruby, 41st, novel, enhanced, sally, adee, 43892134, mspec, 5292036, spectrum, thwarts, sneak, attack, ark, specs, july, reilly, kheradpir, shervin, allan, flight, thornton, fall, edition, 1972, ga27, 2719, january, electric, mahapatra, nihar, venkatrao, balakrishna, 3es, 11557476, 357783, 331677, crossroads, l210, r4f, sandpile, jaleel, aamer, eric, borch, bhandaru, malini, steely, simon, emer, joel, jaleels, achieving, zheng, ying, davis, brian, jordan, matthew, austin, texas, 7803, 8385, ispass, 1291359, evaluation, amecomputers, explanation, bradley, borg, anita, 1992, 114, 146628, 139708, study, lempel, oded, cornell, workshop, interconnects, shih, chiu, edaboard, betw, inside, demo, niu, kun, btic, motiani, dipti, 2017, dual, schedulers, revealed, analyzed, solomon, baruch, mendelson, avi, orenstein, doron, almog, yoav, ronen, ronny, huntington, beach, 195859085, 58113, 371, lpe, 945363, association, machinery, subsystem, via, assembly, makers, fog, 2000, launch, crystal, addition, prefetch, seattle, 373, 134547, 364, letter, qingda, ding, xiaoning, zhao, sadayappan, 14th, salt, city, utah, 378, hpca, 4658653, 367, gaining, insights, partitioning, bridging, roscoe, timothy, baumann, andrew, ethz, 263, 3800, 00l, taylor, davies, peter, farmwald, michael, 2si, 363, 325096, 325161, 355, bottomley, linux, parameter, kaxiras, stefanos, ros, alberto, 40th, 547, 15434231, 9781450320795, 2485922, 2485968, 307, 9125, 535, perspective, efficient, kilburn, payne, howarth, 1961, conferences, eastern, washington, macmillan, 294, 279, key, supervisor, sumner, haley, chenh, spartan, neill, proc, afips, spring, 1967, 621, 1465482, 1465581, 611, experience, multiprogramming, relocation, cragon, harvey, 1996, jones, bartlett, learning, 209, 86720, 474, dugan, ben, concerning, cooperman, gene, basics, morgan, kaufmann, 484, 374493, sadler, nathan, sorin, daniel, 20160350229, developer, programmer, chenxi, yan, yong, 621212, 1997imicr, 17e, 40c, bibcode, kozyrakis, seznec, andré, 1993, 178, 173682, 165152, 169, jahagirdar, sanjeev, varghese, sodhi, inder, wells, megalingam, rajesh, kannan, deepu, joseph, iype, vikram, vandana, science, 556, 18236635, 4244, 4519, iccsit, 5234663, 551, phased, ucsd, edu, launches, p5900, 10nm, radio, press, release, 32kb, 5mb, 15mb, newsroom, sheet, accelerating, infrastructure, white, bill, cecilia, z13s, elsevier, 383872, quantitative, altering, raise, suggest, researchers, alan, jay, 530, 6023466, 356887, 356892, 473, surveys, liptay, 1147, 0015, aspects, landy, barry, tunnel, diode, worked, speeded, operands, obeyed, modulo, remaining, wanted, speedup, words, mathematical, laboratory, aldermaston, cad, centre, chao, zeng, qingkai, nicopolitidis, petros, 1939, 0122, issn, 1155, 5559552, survey, side, channel, attacks, systematic, countermeasures, torres, gabriel, paging, frame, ferranti, memoization, dinero, prefetching, ports, phases, concept, super, architects, explore, tradeoffs, simplescalar, open, source, options, focused, fault, tolerance, goals, mainframes, equipped, gt3e, increasingly, newer, generations, megabytes, enjoyed, prolonged, thanks, previously, named, motherboards, produced, disappeared, development, brought, clocked, termed, differentiate, boards, contained, 485turbocache, kbyte, era, disparity, caused, sdram, mmx, daughtercard, support, reached, featured, 120, refresh, constructed, significantly, latencies, nine, enable, optional, upgrade, dip, cells, bottom, corner, a38202, austek, simms, i386, 68060, kilobytes, 1987, basically, shrink, burst, 68030, accelerates, consist, 1984, typical, 68010, cdc, days, technically, economically, viable, plenty, alleviate, combined, tied, invention, scarcity, span, magnetic, drum, disc, seen, ahead, studies, optimize, optimal, programming, language, algol, fortran, cobol, discuss, improved, delays, collapsing, looks, matched, supplies, similarly, adjacent, clarify, manner, fields, multiplexing, complicated, chooses, save, element, relevant, extracted, returns, aligned, bypassed, inner, sure, restarted, deal, effort, expended, engineering, specify, employ, relied, show, calls, facility, costly, compute, discussing, speaks, thought, bypass, 21264, interesting, trick, protected, accidental, corruption, strike, spare, particle, usual, class, fairly, targets, jumps, pte, responsible, portions, spread, handles, identical, section, fetches, boundaries, predecoding, damaged, fresh, illustrate, spm, internal, temporary, calculations, progress, swapped, saved, incremental, wish, remove, enforce, inclusion, drawback, correlation, associativities, restricted, eviction, possibly, maintain, inclusiveness, diminishes, hitting, exchanged, exchange, copying, decisions, somewhere, reside, universally, accepted, names, partially, demonstrated, constraint, referred, pieces, undesirable, increase, considerably, global, desirable, whole, redundancy, processes, threads, utilized, considering, inevitably, wiring, circa, usable, characteristic, assignments, reallocated, runtime, bank, break, dependencies, easing, acting, essentially, tulsa, incorporated, compatible, madison, 1995, 21164, incorporating, begun, utilize, pull, entire, 2010s, mounted, fourth, rare, 2019, flip, flop, starting, oryon, qualcomm, lunar, a14, z15
Text of the page (random words):
index the cache and does not use any tags false cache hits may occur which is solved by tagging with the virtual address the speed of this recurrence the load latency is crucial to cpu performance and so most modern level 1 caches are virtually indexed which at least allows the mmu s tlb lookup to proceed in parallel with fetching the data from the cache ram but virtual indexing is not the best choice for all cache levels the cost of dealing with virtual aliases grows with cache size and as a result most level 2 and larger caches are physically indexed caches have historically used both virtual and physical addresses for the cache tags although virtual tagging is now uncommon if the tlb lookup can finish before the cache ram lookup then the physical address is available in time for tag compare and there is no need for virtual tagging large caches then tend to be physically tagged and only small very low latency caches are virtually tagged in recent general purpose cpus virtual tagging has been superseded by virtual hints as described below homonym and synonym problems edit a cache that relies on virtual indexing and tagging becomes inconsistent after the same virtual address is mapped into different physical addresses homonym which can be solved by using physical address for tagging or by storing the address space identifier in the cache line however the latter approach does not help against the synonym problem in which several cache lines end up storing data for the same physical address writing to such locations may update only one location in the cache leaving the others with inconsistent data this issue may be solved by using non overlapping memory layouts for different address spaces or otherwise the cache or a part of it must be flushed when the mapping changes 34 virtual tags and hints edit the great advantage of virtual tags is that for associative caches they allow the tag match to proceed before the virtual to physical translation is done however coherence probes and evictions present a physical address for action the hardware must have some means of converting the physical addresses into a cache index generally by storing physical tags as well as virtual tags for comparison a physically tagged cache does not need to keep virtual tags which is simpler when a virtual to physical mapping is deleted from the tlb cache entries with those virtual addresses will have to be flushed somehow alternatively if cache entries are allowed on pages not mapped by the tlb then those entries will have to be flushed when the access rights on those pages are changed in the page table it is also possible for the operating system to ensure that no virtual aliases are simultaneously resident in the cache the operating system makes this guarantee by enforcing page coloring which is described below some early risc processors sparc rs 6000 took this approach it has not been used recently as the hardware cost of detecting and evicting virtual aliases has fallen and the software complexity and performance penalty of perfect page coloring has risen it can be useful to distinguish the two functions of tags in an associative cache they are used to determine which way of the entry set to select and they are used to determine if the cache hit or missed the second function must always be correct but it is permissible for the first function to guess and get the wrong answer occasionally some processors e g early sparcs have caches with both virtual and physical tags the virtual tags are used for way selection and the physical tags are used for determining hit or miss this kind of cache enjoys the latency advantage of a virtually tagged cache and the simple software interface of a physically tagged cache it bears the added cost of duplicated tags however also during miss processing the alternate ways of the cache line indexed have to be probed for virtual aliases and any matches evicted the extra area and some latency can be mitigated by keeping virtual hints with each cache entry instead of virtual tags these hints are a subset or hash of the virtual tag and are used for selecting the way of the cache from which to get data and a physical tag like a virtually tagged cache there may be a virtual hint match but physical tag mismatch in which case the cache entry with the matching hint must be evicted so that cache accesses after the cache fill at this address will have just one hint match since virtual hints have fewer bits than virtual tags distinguishing them from one another a virtually hinted cache suffers more conflict misses than a virtually tagged cache perhaps the ultimate reduction of virtual hints can be found in the pentium 4 willamette and northwood cores in these processors the virtual hint is effectively two bits and the cache is four way set associative effectively the hardware maintains a simple permutation from virtual address to cache index so that no content addressable memory cam is necessary to select the right one of the four ways fetched page coloring edit main article cache coloring large physically indexed caches usually secondary caches run into a problem the operating system rather than the application controls which pages collide with one another in the cache differences in page allocation from one program run to the next lead to differences in the cache collision patterns which can lead to very large differences in program performance these differences can make it very difficult to get a consistent and repeatable timing for a benchmark run to understand the problem consider a cpu with a 1 mib physically indexed direct mapped level 2 cache and 4 kib virtual memory pages sequential physical pages map to sequential locations in the cache until after 256 pages the pattern wraps around we can label each physical page with a color of 0 255 to denote where in the cache it can go locations within physical pages with different colors cannot conflict in the cache programmers attempting to make maximum use of the cache may arrange their programs access patterns so that only 1 mib of data need be cached at any given time thus avoiding capacity misses but they should also ensure that the access patterns do not have conflict misses one way to think about this problem is to divide up the virtual pages the program uses and assign them virtual colors in the same way as physical colors were assigned to physical pages before programmers can then arrange the access patterns of their code so that no two pages with the same virtual color are in use at the same time there is a wide literature on such optimizations e g loop nest optimization largely coming from the high performance computing hpc community the snag is that while all the pages in use at any given moment may have different virtual colors some may have the same physical colors in fact if the operating system assigns physical pages to virtual pages randomly and uniformly it is extremely likely that some pages will have the same physical color and then locations from those pages will collide in the cache this is the birthday paradox the solution is to have the operating system attempt to assign different physical color pages to different virtual colors a technique called page coloring although the actual mapping from virtual to physical color is irrelevant to system performance odd mappings are difficult to keep track of and have little benefit so most approaches to page coloring simply try to keep physical and virtual page colors the same if the operating system can guarantee that each physical page maps to only one virtual color then there are no virtual aliases and the processor can use virtually indexed caches with no need for extra virtual alias probes during miss handling alternatively the os can flush a page from the cache whenever it changes from one virtual color to another as mentioned above this approach was used for some early sparc and rs 6000 designs the software page coloring technique has been used to effectively partition the shared last level cache llc in multicore processors 35 this operating system based llc management in multicore processors has been adopted by intel 36 cache hierarchy in a modern processor edit memory hierarchy of an amd bulldozer server modern processors have multiple interacting on chip caches the operation of a particular cache can be completely specified by the cache size the cache block size the number of blocks in a set the cache set replacement policy and the cache write policy write through or write back 25 while all of the cache blocks in a particular cache are the same size and have the same associativity typically the higher level caches called level 1 cache have a smaller number of blocks smaller block size and fewer blocks in a set but have very short access times lower level caches i e level 2 and below have progressively larger numbers of blocks larger block size more blocks in a set and relatively longer access times but are still much faster than main memory 8 cache entry replacement policy is determined by a cache algorithm selected to be implemented by the processor designers in some cases multiple algorithms are provided for different kinds of work loads specialized caches edit pipelined cpus access memory from multiple points in the pipeline instruction fetch virtual to physical address translation and data fetch see classic risc pipeline the natural design is to use different physical caches for each of these points so that no one physical resource has to be scheduled to service two points in the pipeline thus the pipeline naturally ends up with at least three separate caches instruction tlb and data each specialized to its particular role victim cache edit main article victim cache a victim cache is a cache used to hold blocks evicted from a cpu cache upon replacement the victim cache lies between the main cache and its refill path and holds only those blocks of data that were evicted from the main cache the victim cache is usually fully associative and is intended to reduce the number of conflict misses many commonly used programs do not require an associative mapping for all the accesses in fact only a small fraction of the memory accesses of the program require high associativity the victim cache exploits this property by providing high associativity to only these accesses it was introduced by norman jouppi from dec in 1990 37 intel s crystalwell 38 variant of its haswell processors introduced an on package 128 mib edram level 4 cache which serves as a victim cache to the processors level 3 cache 39 in the skylake microarchitecture the level 4 cache no longer works as a victim cache 40 trace cache edit main article trace cache one of the more extreme examples of cache specialization is the trace cache also known as execution trace cache found in the intel pentium 4 microprocessors a trace cache is a mechanism for increasing the instruction fetch bandwidth and decreasing power consumption in the case of the pentium 4 by storing traces of instructions that have already been fetched and decoded 41 a trace cache stores instructions either after they have been decoded or as they are retired generally instructions are added to trace caches in groups representing either individual basic blocks or dynamic instruction traces the pentium 4 s trace cache stores micro operations resulting from decoding x86 instructions providing also the functionality of a micro operation cache having this the next time an instruction is needed it does not have to be decoded into micro ops again 42 63 68 write coalescing cache wcc edit write coalescing cache 43 is a special cache that is part of l2 cache in amd s bulldozer microarchitecture stores from both l1d caches in the module go through the wcc where they are buffered and coalesced the wcc s task is reducing number of writes to the l2 cache micro operation μop or uop cache edit a micro operation cache μop cache uop cache or uc 44 is a specialized cache that stores micro operations of decoded instructions as received directly from the instruction decoders or from the instruction cache when an instruction needs to be decoded the μop cache is checked for its decoded form which is re used if cached if it is not available the instruction is decoded and then cached one of the early works describing μop cache as an alternative frontend for the intel p6 processor family is the 2001 paper micro operation cache a power aware frontend for variable instruction length isa 45 later intel included μop caches in its sandy bridge processors and in successive microarchitectures like ivy bridge and haswell 42 121 123 46 amd implemented a μop cache in their zen microarchitecture 47 fetching complete pre decoded instructions eliminates the need to repeatedly decode variable length complex instructions into simpler fixed length micro operations and simplifies the process of predicting fetching rotating and aligning fetched instructions a μop cache effectively offloads the fetch and decode hardware thus decreasing power consumption and improving the frontend supply of decoded micro operations the μop cache also increases performance by more consistently delivering decoded micro operations to the backend and eliminating various bottlenecks in the cpu s fetch and decode logic 45 46 a μop cache has many similarities with a trace cache although a μop cache is much simpler thus providing better power efficiency this makes it better suited for implementations on battery powered devices the main disadvantage of the trace cache leading to its power inefficiency is the hardware complexity required for its heuristic deciding on caching and reusing dynamically created instruction traces 48 branch target instruction cache edit a branch target cache or branch target instruction cache the name used on arm microprocessors 49 is a specialized cache which holds the first few instructions at the destination of a taken branch this is used by low powered processors which do not need a normal instruction cache because the memory system is capable of delivering instructions fast enough to satisfy the cpu without one however this only applies to consecutive instructions in sequence it still takes several cycles of latency to restart instruction fetch at a new address causing a few cycles of pipeline bubble after a control transfer a branch target cache provides instructions for those few cycles avoiding a delay after most taken branches this allows full speed operation with a much smaller cache than a traditional full time instruction cache smart cache edit smart cache is a level 2 or level 3 caching method for multiple execution cores developed by intel smart cache shares the actual cache memory between the cores of a multi core processor in comparison to a dedicated per core cache the overall cache miss rate decreases when cores do not require equal parts of the cache space consequently a single core can use the full level ...
|