{
  "slug": "clock-replacement",
  "term": "CLOCK cache replacement",
  "aliases": [
    "CLOCK",
    "second-chance replacement",
    "FIFO reinsertion"
  ],
  "definition": "CLOCK is a cache replacement policy that gives referenced entries another chance by clearing their reference state during an eviction scan.",
  "note": "In the one-bit FIFO-reinsertion form compared with SIEVE, a referenced victim candidate is moved to the new end of the queue. SIEVE instead preserves its old position. Similar reference bits do not imply identical eviction choices. [authors]\n\nInitial reference state and counter width can differ across implementations. A comparison needs these settings as well as capacity and request order. [replay]",
  "related": [
    "sieve-eviction",
    "lru-replacement",
    "adaptive-replacement-cache",
    "cache-pollution"
  ],
  "citations": [
    {
      "id": "authors",
      "title": "Yang and colleagues. SIEVE: Cache eviction can be simple, effective, and scalable. USENIX ;login:, 16 June 2024. Author explanation of list ordering.",
      "url": "https://www.usenix.org/publications/loginonline/sieve-cache-eviction-can-be-simple-effective-and-scalable",
      "accessed": "2026-10-17"
    },
    {
      "id": "replay",
      "title": "Hesela: explicit CLOCK settings and complete constructed-trace hit/miss outcomes.",
      "url": "https://hesela.dev/research/sieve-traces.json",
      "accessed": "2026-10-17"
    }
  ],
  "status": "research",
  "advantages": [],
  "limitations": [],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-17",
  "provenance": [
    "The constructed libCacheSim 0.3.5 replay fixes init_freq=0 and n_bit_counter=1; these are experiment settings, not a definition of every CLOCK variant. [replay]"
  ]
}
