diff --git a/_quarto.yml b/_quarto.yml
index f861f100c788abeb4ff15de6d2d76eae08732b58..dd0f9f57d281ede6b55cc660c51255816b6ce695 100644
--- a/_quarto.yml
+++ b/_quarto.yml
@@ -57,7 +57,7 @@ website:
           - "exercises/parallelism/parallelism.qmd"
           - "exercises/hardware/hardware.qmd"
           - "exercises/file-and-data-systems.qmd"
-          # - "exercises/memory_hierarchies.qmd"
+          - "exercises/memory-hierarchies.qmd"
           # - "exercises/student_talks.qmd"
 
 format:
diff --git a/exercises/memory-hierarchies.qmd b/exercises/memory-hierarchies.qmd
new file mode 100644
index 0000000000000000000000000000000000000000..d31771fc73f1a60485417080c93453e350a75956
--- /dev/null
+++ b/exercises/memory-hierarchies.qmd
@@ -0,0 +1,11 @@
+---
+title: "Memory Hierarchies"
+---
+
+Review the memory mountain hands-on and look into the source code:
+In `main()` the function `run()` is called for each combination of `size` and `stride`
+which in turn calls `fcyc2()` and `fcyc2_full()`.
+
+What happens there to ensure that only the desired cache effects for the test function `f` are measured?
+Describe the mechanism and why it is necessary for accurate measurements in a short paragraph.
+Refer to the code and what you learned in the lecture about it.