Documentation

This commit is contained in:
tevador 2019-03-13 17:49:43 +01:00 committed by GitHub
parent 0d9beb5418
commit 4a87af7940
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -32,7 +32,7 @@ Algorithms with a fixed or slowly changing sequence of operations can be impleme
Modern CPUs include a sophisticated [branch predictor](https://en.wikipedia.org/wiki/Branch_predictor) unit to ensure uninterrupted flow of instructions. If a branch prediction fails, the speculatively executed instructions are thrown away, which results in a certain amount of wasted energy with each misprediction. Modern CPUs include a sophisticated [branch predictor](https://en.wikipedia.org/wiki/Branch_predictor) unit to ensure uninterrupted flow of instructions. If a branch prediction fails, the speculatively executed instructions are thrown away, which results in a certain amount of wasted energy with each misprediction.
To maximize the amount of useful work per unit of energy, mispredictions must be avoided. The best way to maximize CPU efficiency is therefore to not have any branches at all. Therefore, RandomX programs are branchless. To maximize the amount of useful work per unit of energy, mispredictions must be avoided. The best way to maximize CPU efficiency is not to have any branches at all. Therefore, RandomX programs are branchless.
### CPU Caches ### CPU Caches
@ -89,7 +89,7 @@ All Dataset accesses read whole CPU cache line (64 bytes) and are fully prefetch
#### Cache #### Cache
The Cache, which is used for light verification and Dataset construction, is 16 times smaller than the Dataset. To keep a constant area * time product, each Dataset item is construction from 16 Cache accesses (16 * 256 MiB = 1 * 4 GiB). The Cache, which is used for light verification and Dataset construction, is 16 times smaller than the Dataset. To keep a constant area-time product, each Dataset item is constructed by 16 Cache accesses (16 * 256 MiB = 1 * 4 GiB).
Because 256 MiB is small enough to be included on-chip, RandomX uses a high-latency mixing function (SquareHash) which defeats the benefits of using low-latency memory for mining in tradeoff mode. Because 256 MiB is small enough to be included on-chip, RandomX uses a high-latency mixing function (SquareHash) which defeats the benefits of using low-latency memory for mining in tradeoff mode.
@ -120,4 +120,4 @@ The Finalizer was designed for fastest possible calculation of the Scratchpad fi
### Chaining of VM executions ### Chaining of VM executions
RandomX chains 8 VM initializations and executions to prevent mining strategies that search for 'easy' programs. RandomX chains 8 VM initializations and executions to prevent mining strategies that search for 'easy' programs.