Skip to content
This repository has been archived by the owner on Jan 10, 2025. It is now read-only.

Improves Address Translation Speed #131

Merged
merged 3 commits into from
Dec 30, 2020
Merged

Conversation

Lichtso
Copy link

@Lichtso Lichtso commented Dec 30, 2020

... by using the eytzinger order instead of performing a binary search on the regions in ascending order.
Additionally, the keys are copied into a dense vector without any gaps or stride, for better utilization of the cache.

Benchmarks

Overall, the performance benchmarks indicate a ~ 30% speed up in address translation.

Binary Search, Regions Directly

test bench_gapped_randomized_access_with_1024_entries ... bench: 18 ns/iter (+/- 7)
test bench_mapping_with_1024_entries ... bench: 18 ns/iter (+/- 3)
test bench_randomized_access_with_0001_entry ... bench: 20 ns/iter (+/- 4)
test bench_randomized_access_with_1024_entries ... bench: 74 ns/iter (+/- 14)
test bench_randomized_mapping_access_with_0004_entries ... bench: 28 ns/iter (+/- 5)
test bench_randomized_mapping_access_with_0016_entries ... bench: 41 ns/iter (+/- 9)
test bench_randomized_mapping_access_with_0064_entries ... bench: 52 ns/iter (+/- 10)
test bench_randomized_mapping_access_with_0256_entries ... bench: 62 ns/iter (+/- 8)
test bench_randomized_mapping_access_with_1024_entries ... bench: 70 ns/iter (+/- 12)
test bench_randomized_mapping_with_1024_entries ... bench: 18 ns/iter (+/- 9)

Binary Search, Dense Keys

test bench_gapped_randomized_access_with_1024_entries ... bench: 19 ns/iter (+/- 9)
test bench_mapping_with_1024_entries ... bench: 18 ns/iter (+/- 3)
test bench_randomized_access_with_0001_entry ... bench: 18 ns/iter (+/- 7)
test bench_randomized_access_with_1024_entries ... bench: 77 ns/iter (+/- 11)
test bench_randomized_mapping_access_with_0004_entries ... bench: 28 ns/iter (+/- 5)
test bench_randomized_mapping_access_with_0016_entries ... bench: 42 ns/iter (+/- 10)
test bench_randomized_mapping_access_with_0064_entries ... bench: 52 ns/iter (+/- 10)
test bench_randomized_mapping_access_with_0256_entries ... bench: 63 ns/iter (+/- 11)
test bench_randomized_mapping_access_with_1024_entries ... bench: 73 ns/iter (+/- 16)
test bench_randomized_mapping_with_1024_entries ... bench: 17 ns/iter (+/- 2)

Eytzinger Heap, Regions Directly

test bench_gapped_randomized_access_with_1024_entries ... bench: 23 ns/iter (+/- 4)
test bench_mapping_with_1024_entries ... bench: 40 ns/iter (+/- 7)
test bench_randomized_access_with_0001_entry ... bench: 22 ns/iter (+/- 4)
test bench_randomized_access_with_1024_entries ... bench: 50 ns/iter (+/- 10)
test bench_randomized_mapping_access_with_0004_entries ... bench: 29 ns/iter (+/- 5)
test bench_randomized_mapping_access_with_0016_entries ... bench: 31 ns/iter (+/- 5)
test bench_randomized_mapping_access_with_0064_entries ... bench: 37 ns/iter (+/- 7)
test bench_randomized_mapping_access_with_0256_entries ... bench: 43 ns/iter (+/- 6)
test bench_randomized_mapping_access_with_1024_entries ... bench: 45 ns/iter (+/- 21)
test bench_randomized_mapping_with_1024_entries ... bench: 40 ns/iter (+/- 6)

Eytzinger Heap, Dense Keys

test bench_gapped_randomized_access_with_1024_entries ... bench: 22 ns/iter (+/- 3)
test bench_mapping_with_1024_entries ... bench: 35 ns/iter (+/- 7)
test bench_randomized_access_with_0001_entry ... bench: 22 ns/iter (+/- 4)
test bench_randomized_access_with_1024_entries ... bench: 45 ns/iter (+/- 8)
test bench_randomized_mapping_access_with_0004_entries ... bench: 26 ns/iter (+/- 13)
test bench_randomized_mapping_access_with_0016_entries ... bench: 29 ns/iter (+/- 7)
test bench_randomized_mapping_access_with_0064_entries ... bench: 35 ns/iter (+/- 6)
test bench_randomized_mapping_access_with_0256_entries ... bench: 40 ns/iter (+/- 8)
test bench_randomized_mapping_access_with_1024_entries ... bench: 45 ns/iter (+/- 7)
test bench_randomized_mapping_with_1024_entries ... bench: 35 ns/iter (+/- 5)

@Lichtso Lichtso merged commit a9e947d into main Dec 30, 2020
@Lichtso Lichtso deleted the improve/address_translation_speed branch December 30, 2020 20:05
@Lichtso Lichtso restored the improve/address_translation_speed branch December 30, 2020 20:07
@Lichtso Lichtso deleted the improve/address_translation_speed branch December 30, 2020 20:08
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant