From ef674f615b263aaa988b0a4cb74765102431db7c Mon Sep 17 00:00:00 2001 From: Luke Kenneth Casson Leighton Date: Fri, 20 Mar 2020 20:06:37 +0000 Subject: [PATCH] add set-associative cache example image --- 3d_gpu/architecture/set_associative_cache.jpg | Bin 0 -> 27228 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 3d_gpu/architecture/set_associative_cache.jpg diff --git a/3d_gpu/architecture/set_associative_cache.jpg b/3d_gpu/architecture/set_associative_cache.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d9566504a5bec5c431653f0dfc83ef42a7f033fa GIT binary patch literal 27228 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