{"entry_id": "9012e0db-e210-4b74-a11d-1e09118a499f", "infos": [{"txt": "GitHub  jandrewrogers/RotoHash:", "language": "english", "position": {"atoms": [{"position_id": 0, "txt": "GitHub  jandrewrogers/RotoHash:", "x": "//title"}]}, "tags": [], "label": "O", "web_segment_id": 0, "global_sentence_id": 0, "edu_l1_label": "EDU_O"}, {"txt": " RotoHash:", "language": "english", "position": {"atoms": [{"position_id": 0, "txt": " RotoHash:", "x": "//title"}]}, "tags": [], "label": "O", "web_segment_id": 0, "global_sentence_id": 1, "edu_l1_label": "EDU_O"}, {"txt": " Hashing for High", "language": "english", "position": {"atoms": [{"position_id": 0, "txt": " Hashing for High", "x": "//title"}]}, "tags": [], "label": "O", "web_segment_id": 0, "global_sentence_id": 2, "edu_l1_label": "EDU_O"}, {"txt": "RotoHash:", "language": "english", "position": {"atoms": [{"position_id": 607, "txt": "RotoHash:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[1]/h1"}]}, "tags": ["h1"], "label": "article_title", "web_segment_id": 1, "global_sentence_id": 3, "edu_l1_label": "BOT"}, {"txt": " Checksum for High-Bandwidth Data", "language": "english", "position": {"atoms": [{"position_id": 608, "txt": " Checksum for High-Bandwidth Data", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[1]/h1"}]}, "tags": ["h1"], "label": "article_title", "web_segment_id": 1, "global_sentence_id": 4, "edu_l1_label": "BOT"}, {"txt": "RotoHash is a 128-bit hash algorithm optimized for extreme throughput and exceptional hash quality.", "language": "english", "position": {"atoms": [{"position_id": 610, "txt": "RotoHash is a 128-bit hash algorithm optimized for extreme throughput and exceptional hash quality.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[1]"}]}, "tags": [], "label": "content", "web_segment_id": 2, "global_sentence_id": 5, "edu_l1_label": "BOS"}, {"txt": " It was developed to address the need for robust I/O and storage checksums at sustained rates exceeding 100 GB/s but the design is general in nature.", "language": "english", "position": {"atoms": [{"position_id": 611, "txt": " It was developed to address the need for robust I/O and storage checksums at sustained rates exceeding 100 GB/s but the design is general in nature.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[1]"}]}, "tags": [], "label": "content", "web_segment_id": 2, "global_sentence_id": 6, "edu_l1_label": "IOS"}, {"txt": "This reference implementation consistently delivers >100 GB/s throughput per core on recent servers.", "language": "english", "position": {"atoms": [{"position_id": 613, "txt": "This reference implementation consistently delivers >100 GB/s throughput per core on recent servers.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[2]"}]}, "tags": [], "label": "content", "web_segment_id": 3, "global_sentence_id": 7, "edu_l1_label": "IOS"}, {"txt": " Hash quality is indistinguishable from MD5.", "language": "english", "position": {"atoms": [{"position_id": 614, "txt": " Hash quality is indistinguishable from ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[2]"}, {"position_id": 616, "txt": "MD5", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[2]/a"}, {"position_id": 618, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[2]/a"}]}, "tags": [], "label": "content", "web_segment_id": 3, "global_sentence_id": 8, "edu_l1_label": "IOS"}, {"txt": " RotoHash is highly portable but intended for modern microarchitectures.", "language": "english", "position": {"atoms": [{"position_id": 619, "txt": " RotoHash is highly portable but intended for modern microarchitectures.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[2]/a"}]}, "tags": [], "label": "content", "web_segment_id": 3, "global_sentence_id": 9, "edu_l1_label": "IOS"}, {"txt": "This hash design has a high fixed cost but very low marginal cost.", "language": "english", "position": {"atoms": [{"position_id": 621, "txt": "This hash design has a high fixed cost but very low marginal cost.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[3]"}]}, "tags": [], "label": "content", "web_segment_id": 4, "global_sentence_id": 10, "edu_l1_label": "IOS"}, {"txt": " It provides state-of-the-art performance for cases where the average key size is hundreds of bytes or larger, such as storage or network I/O.", "language": "english", "position": {"atoms": [{"position_id": 622, "txt": " It provides state-of-the-art performance for cases where the average key size is hundreds of bytes or larger, such as storage or network I/O.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[3]"}]}, "tags": [], "label": "content", "web_segment_id": 4, "global_sentence_id": 11, "edu_l1_label": "IOS"}, {"txt": " RotoHash is a poor choice for applications where fixed costs dominate performance such as small string hashing.", "language": "english", "position": {"atoms": [{"position_id": 623, "txt": " RotoHash is a poor choice for applications where fixed costs dominate performance such as small string hashing.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[3]"}]}, "tags": [], "label": "content", "web_segment_id": 4, "global_sentence_id": 12, "edu_l1_label": "IOS"}, {"txt": " For these use cases an algorithm such as rapidhash may be more appropriate.", "language": "english", "position": {"atoms": [{"position_id": 624, "txt": " For these use cases an algorithm such as ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[3]"}, {"position_id": 626, "txt": "rapidhash", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[3]/a"}, {"position_id": 628, "txt": " may be more appropriate.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[3]/a"}]}, "tags": [], "label": "content", "web_segment_id": 4, "global_sentence_id": 13, "edu_l1_label": "IOS"}, {"txt": "Performance", "language": "english", "position": {"atoms": [{"position_id": 630, "txt": "Performance", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[2]/h2"}]}, "tags": ["h2"], "label": "title1", "web_segment_id": 5, "global_sentence_id": 14, "edu_l1_label": "BOS"}, {"txt": "<table <table position_id=\"557\"><thead position_id=\"558\"><tr position_id=\"559\"><th align=\"left\" position_id=\"560\">CPU Architecture</th><th align=\"right\" position_id=\"561\">256K (Aligned)</th><th align=\"right\" position_id=\"562\">256K (Unaligned)</th><th align=\"right\" position_id=\"563\">1000 Bytes</th><th align=\"right\" position_id=\"564\">Less Than 256 Bytes</th></tr></thead><tbody position_id=\"565\"><tr position_id=\"566\"><td align=\"left\" position_id=\"567\">Intel Sapphire Rapids</td><td align=\"right\" position_id=\"568\">240 GB/s</td><td align=\"right\" position_id=\"569\">130 GB/s</td><td align=\"right\" position_id=\"570\">62 cycles/hash</td><td align=\"right\" position_id=\"571\">58 cycles/hash</td></tr><tr position_id=\"572\"><td align=\"left\" position_id=\"573\">AMD Zen 4</td><td align=\"right\" position_id=\"574\">147 GB/s</td><td align=\"right\" position_id=\"575\">143 GB/s</td><td align=\"right\" position_id=\"576\">78 cycles/hash</td><td align=\"right\" position_id=\"577\">70 cycles/hash</td></tr><tr position_id=\"578\"><td align=\"left\" position_id=\"579\">Intel Ice Lake</td><td align=\"right\" position_id=\"580\">173 GB/s</td><td align=\"right\" position_id=\"581\">61 GB/s</td><td align=\"right\" position_id=\"582\">86 cycles/hash</td><td align=\"right\" position_id=\"583\">82 cycles/hash</td></tr></tbody></table>", "language": "english", "position": {"atoms": [{"position_id": 557, "txt": "<table <table position_id=\"557\"><thead position_id=\"558\"><tr position_id=\"559\"><th align=\"left\" position_id=\"560\">CPU Architecture</th><th align=\"right\" position_id=\"561\">256K (Aligned)</th><th align=\"right\" position_id=\"562\">256K (Unaligned)</th><th align=\"right\" position_id=\"563\">1000 Bytes</th><th align=\"right\" position_id=\"564\">Less Than 256 Bytes</th></tr></thead><tbody position_id=\"565\"><tr position_id=\"566\"><td align=\"left\" position_id=\"567\">Intel Sapphire Rapids</td><td align=\"right\" position_id=\"568\">240 GB/s</td><td align=\"right\" position_id=\"569\">130 GB/s</td><td align=\"right\" position_id=\"570\">62 cycles/hash</td><td align=\"right\" position_id=\"571\">58 cycles/hash</td></tr><tr position_id=\"572\"><td align=\"left\" position_id=\"573\">AMD Zen 4</td><td align=\"right\" position_id=\"574\">147 GB/s</td><td align=\"right\" position_id=\"575\">143 GB/s</td><td align=\"right\" position_id=\"576\">78 cycles/hash</td><td align=\"right\" position_id=\"577\">70 cycles/hash</td></tr><tr position_id=\"578\"><td align=\"left\" position_id=\"579\">Intel Ice Lake</td><td align=\"right\" position_id=\"580\">173 GB/s</td><td align=\"right\" position_id=\"581\">61 GB/s</td><td align=\"right\" position_id=\"582\">86 cycles/hash</td><td align=\"right\" position_id=\"583\">82 cycles/hash</td></tr></tbody></table>", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/markdown-accessiblity-table/table"}]}, "tags": ["table"], "label": "table", "web_segment_id": 6, "global_sentence_id": 15, "edu_l1_label": "EDU_O"}, {"txt": "These values are representative of the pure AVX-512 implementation.", "language": "english", "position": {"atoms": [{"position_id": 632, "txt": "These values are representative of the pure AVX-512 implementation.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[4]"}]}, "tags": [], "label": "content", "web_segment_id": 7, "global_sentence_id": 16, "edu_l1_label": "IOS"}, {"txt": " On older microarchitectures such as Ice Lake, the 128-bit implementation may be faster in some cases.", "language": "english", "position": {"atoms": [{"position_id": 633, "txt": " On older microarchitectures such as Ice Lake, the 128-bit implementation may be faster in some cases.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[4]"}]}, "tags": [], "label": "content", "web_segment_id": 7, "global_sentence_id": 17, "edu_l1_label": "IOS"}, {"txt": "Quality", "language": "english", "position": {"atoms": [{"position_id": 635, "txt": "Quality", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[3]/h2"}]}, "tags": ["h2"], "label": "title1", "web_segment_id": 8, "global_sentence_id": 18, "edu_l1_label": "BOS"}, {"txt": "No issues detected under extended testing in test suites such as SMHasher3.", "language": "english", "position": {"atoms": [{"position_id": 637, "txt": "No issues detected under extended testing in test suites such as SMHasher3.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[5]"}]}, "tags": [], "label": "content", "web_segment_id": 9, "global_sentence_id": 19, "edu_l1_label": "IOS"}, {"txt": "Hash quality is atypically high for an algorithm not specifically designed for cryptographic use.", "language": "english", "position": {"atoms": [{"position_id": 639, "txt": "Hash quality is atypically high for an algorithm not specifically designed for cryptographic use.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[6]"}]}, "tags": [], "label": "content", "web_segment_id": 10, "global_sentence_id": 20, "edu_l1_label": "IOS"}, {"txt": " The algorithm can be trivially modified to reduce overhead, thereby increasing performance, while still passing test suites with reduced hash quality.", "language": "english", "position": {"atoms": [{"position_id": 640, "txt": " The algorithm can be trivially modified to reduce overhead, thereby increasing performance, while still passing test suites with reduced hash quality.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[6]"}]}, "tags": [], "label": "content", "web_segment_id": 10, "global_sentence_id": 21, "edu_l1_label": "IOS"}, {"txt": " That is not the objective here.", "language": "english", "position": {"atoms": [{"position_id": 641, "txt": " That is not the objective here.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[6]"}]}, "tags": [], "label": "content", "web_segment_id": 10, "global_sentence_id": 22, "edu_l1_label": "IOS"}, {"txt": "Construction", "language": "english", "position": {"atoms": [{"position_id": 643, "txt": "Construction", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[4]/h2"}]}, "tags": ["h2"], "label": "title1", "web_segment_id": 11, "global_sentence_id": 23, "edu_l1_label": "BOS"}, {"txt": "The algorithm is built on three 32-bit primitives:", "language": "english", "position": {"atoms": [{"position_id": 645, "txt": "The algorithm is built on three 32-bit primitives:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[7]"}]}, "tags": [], "label": "content", "web_segment_id": 12, "global_sentence_id": 24, "edu_l1_label": "IOS"}, {"txt": " xor, rotate, and AES encrypt [0].", "language": "english", "position": {"atoms": [{"position_id": 646, "txt": " xor, rotate, and AES encrypt [0].", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[7]"}]}, "tags": [], "label": "content", "web_segment_id": 12, "global_sentence_id": 25, "edu_l1_label": "IOS"}, {"txt": " It supports incremental hashing.", "language": "english", "position": {"atoms": [{"position_id": 647, "txt": " It supports incremental hashing.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[7]"}]}, "tags": [], "label": "content", "web_segment_id": 12, "global_sentence_id": 26, "edu_l1_label": "IOS"}, {"txt": " RotoHash has 256 bytes of internal state.", "language": "english", "position": {"atoms": [{"position_id": 648, "txt": " RotoHash has 256 bytes of internal state.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[7]"}]}, "tags": [], "label": "content", "web_segment_id": 12, "global_sentence_id": 27, "edu_l1_label": "IOS"}, {"txt": " This is unusually wide for hash state and incurs a high fixed cost, particularly on older microarchitectures.", "language": "english", "position": {"atoms": [{"position_id": 649, "txt": " This is unusually wide for hash state and incurs a high fixed cost, particularly on older microarchitectures.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[7]"}]}, "tags": [], "label": "content", "web_segment_id": 12, "global_sentence_id": 28, "edu_l1_label": "IOS"}, {"txt": " However, this also increases the potential for parallelism and quality.", "language": "english", "position": {"atoms": [{"position_id": 650, "txt": " However, this also increases the potential for parallelism and quality.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[7]"}]}, "tags": [], "label": "content", "web_segment_id": 12, "global_sentence_id": 29, "edu_l1_label": "IOS"}, {"txt": " Support for AVX-512 and vector AES were core design objectives in order to efficiently meet throughput requirements but are not required.", "language": "english", "position": {"atoms": [{"position_id": 651, "txt": " Support for AVX-512 and vector AES were core design objectives in order to efficiently meet throughput requirements but are not required.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[7]"}]}, "tags": [], "label": "content", "web_segment_id": 12, "global_sentence_id": 30, "edu_l1_label": "IOS"}, {"txt": "[0] While AES operates on 128-bit blocks, the internals of AES are 32-bit and can be modeled as such.", "language": "english", "position": {"atoms": [{"position_id": 653, "txt": "[0] While AES operates on 128-bit blocks, the internals of AES are 32-bit and can be modeled as such.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[8]"}]}, "tags": [], "label": "content", "web_segment_id": 13, "global_sentence_id": 31, "edu_l1_label": "IOS"}, {"txt": "Status", "language": "english", "position": {"atoms": [{"position_id": 655, "txt": "Status", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[5]/h2"}]}, "tags": ["h2"], "label": "title1", "web_segment_id": 14, "global_sentence_id": 32, "edu_l1_label": "BOS"}, {"txt": "The reference implementation currently supports x86-64 with AVX2 (e.g. Intel Haswell) and takes advantage of more advanced features if available.", "language": "english", "position": {"atoms": [{"position_id": 657, "txt": "The reference implementation currently supports x86-64 with AVX2 (e.g. Intel Haswell) and takes advantage of more advanced features if available.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[9]"}]}, "tags": [], "label": "content", "web_segment_id": 15, "global_sentence_id": 33, "edu_l1_label": "IOS"}, {"txt": " Support for ARM64 will likely be added at some point.", "language": "english", "position": {"atoms": [{"position_id": 658, "txt": " Support for ARM64 will likely be added at some point.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[9]"}]}, "tags": [], "label": "content", "web_segment_id": 15, "global_sentence_id": 34, "edu_l1_label": "IOS"}, {"txt": " Various minor implementation improvements still need to be done.", "language": "english", "position": {"atoms": [{"position_id": 659, "txt": " Various minor implementation improvements still need to be done.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[9]"}]}, "tags": [], "label": "content", "web_segment_id": 15, "global_sentence_id": 35, "edu_l1_label": "IOS"}, {"txt": "The baseline algorithm is unlikely to change but analysis and verification of hash quality is ongoing.", "language": "english", "position": {"atoms": [{"position_id": 661, "txt": "The baseline algorithm is unlikely to change but analysis and verification of hash quality is ongoing.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[10]"}]}, "tags": [], "label": "content", "web_segment_id": 16, "global_sentence_id": 36, "edu_l1_label": "IOS"}, {"txt": " The algorithm and reference implementation are distributed under the MIT License.", "language": "english", "position": {"atoms": [{"position_id": 662, "txt": " The algorithm and reference implementation are distributed under the MIT License.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[10]"}]}, "tags": [], "label": "content", "web_segment_id": 16, "global_sentence_id": 37, "edu_l1_label": "IOS"}], "type": "WEB"}
# RotoHash: Checksum for High-Bandwidth Data
## Performance
## Quality
## Construction
## Status
