Skip to content
GitLab
  • Menu
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • Waypipe Waypipe
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 29
    • Issues 29
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • M. Stoeckl
  • WaypipeWaypipe
  • Issues
  • #13
Closed
Open
Created Aug 09, 2019 by M. Stoeckl@mstoecklOwner

Investigate hash-based change detection for long unchanged runs in a buffer

Constructing buffer diffs appears to be memory bandwidth limited when wider SIMD registers are used. When the two buffers being compared are identical, bandwidth is split between two streams of data being read at the same rate; when they differ, two streams are read, and two are written. In theory, one could reduce the memory traffic in the first case to a single stream of data, which is read, hashed, and then compared with a hash computed during the last diff cycle. For example, using 32B hashes to summarize 4KB blocks, instead of reading 8KB to data to determine that nothing has changed, one could read 4.03KB of data. The downsides of hash-based change detection are that it requires extra work to compute hashes in any case, and that incorrectly speculating that a 4KB block is unchanged requires that the block be retried with the standard diff method.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking