5.2 Caches are important to providing a high-performance memory hierarchy
to processors. Below is a list of 64-bit memory address references, given as word
addresses.
0x03, 0xb4, 0x2b, 0x02, 0xbf, 0x58, 0xbe, 0x0e, 0xb5, 0x2c, 0xba, 0xfd
سوال به ما یک سری آدرس داده و گفته است که این آدرس ها را داخل حافظه نهان (cache) بریزید. خب همان طور که سوال گفته آدرس ها 64بیتی هستند و همگی به یک Word از حافظه اصلی اشاره میکنند که این در بعضی سوالات Byte هم آمده است.
ادامه سوالات و حل تشریحی را در ادامه مطلب مشاهده کنید.
5.2.1 [10] <§5.3> For each of these references, identify the binary word address,
the tag, and the index given a direct-mapped cache with 16 one-word blocks. Also
list whether each reference is a hit or a miss, assuming the cache is initially empty.
راه حل و توضیحات:
سوال از ما میخواهد که برای هر کدام از ارجاع ها، آدرس دودویی word را به دست آوریم، قسمت tag و index را مشخص کنیم. در این سوال هر سطر یا entity حافظه نهان شامل 16 بلاک یک کلمه ای میشود. خب هدف نهایی هم تشخیص hit یا miss برای این ارجاع هایی است که سوال به ما داده.
از آنجا که در هر بلاک 16 کلمه داریم و ارجاع به حافظه اصلی هم به هر کلمه است پس 4 بیت ما صرف index میشود،
یعنی آدرس باینری که محاسبه کردیم 4 بیت از سمت راست آن را برای index در نظر میگیریم.:
16 blocks => 4bit index
چون ارجاع به حافظه اصلی به هر Word است و هر بلاک cache هم یک Word دارد، پس دیگر offset نداریم.
خب حالا که پارامترهای cache را بررسی کردیم، میتوانیم برای ارجاع هایی که سوال به ما داده جدول بکشیم و وضعیت hit یا miss را مشخص کنیم.
address | decimal address | binary address | tags | index | miss/hit |
0x03 | 3 | 0000 0011 | 0000 | 0011 | miss |
0xb4 | 180 | 1011 0100 | 1011 | 0100 | miss |
0x2b | 43 | 0010 1011 | 0010 | 1011 | miss |
0x02 | 2 | 0000 0010 | 0000 | 0010 | miss |
0xbf | 191 | 1011 1111 | 1011 | 1111 | miss |
0x58 | 88 | 0101 1000 | 0101 | 1000 | miss |
0xbe | 190 | 1011 1110 | 1011 | 1110 | miss |
0x0e | 14 | 0000 1110 | 0000 | 1110 | miss |
0xb5 | 181 | 1011 0101 | 1011 | 0101 | miss |
0x2c | 44 | 0010 1100 | 0010 | 1100 | miss |
0xba | 186 | 1011 1010 | 1011 | 1010 | miss |
0xfd | 240 | 1111 1101 | 1111 | 1101 | miss |
5.2.2 [10] <§5.3> For each of these references, identify the binary word address,
the tag, the index, and the offset given a direct-mapped cache with two-word blocks
and a total size of eight blocks. Also list if each reference is a hit or a miss, assuming
the cache is initially empty.
راه حل و توضیحات:
two-words = 2*4 = 8 bytes => Byte offset = 3bit
در این قسمت سوال کل حافظه cache ما شامل هشت بلاک است؛ یعنی اگر بلاک را یک سطر در نظر بگیریم کل حافظه cache از 8 سطر تشکیل شده است، بنابراین باید 3 عدد بیت را برای شماره گذاری این 8 بلاک در نظر بگیریم.
8 blocks => 3bit index
چون ارجاع به حافظه اصلی به هر Word است و هر بلاک cache هم دو Word دارد، پس یک بیت offset داریم، یعنی بیت کم ارزش یا آخرین بیت برای cache مهم نیست چرا که هر بلاک cache دارد به دو آدرس حافظه اشاره میکند. دقت کنید که تشخیص این بیت offset در hit یا miss شدن ارجاع تاثیر گذار است.
و در آخر هر تعداد بیتی که از سمت راست اضافه آمد بیتهای tag حافظه cache را تشکیل میدهند؛ حالا که پارامترهای cache را بررسی کردیم، میتوانیم برای ارجاع هایی که سوال به ما داده جدول بکشیم و وضعیت hit یا miss را مشخص کنیم.
address | decimal address | binary address | tags | index | Word offset | miss/hit |
0x03 | 3 | 0000 0011 | 0000 | 001 | 1 | miss |
0xb4 | 180 | 1011 0100 | 1011 | 010 | 0 | miss |
0x2b | 43 | 0010 1011 | 0010 | 101 | 0 | miss |
0x02 | 2 | 0000 0010 | 0000 | 001 | 0 | hit |
0xbf | 191 | 1011 1111 | 1011 | 111 | 1 | miss |
0x58 | 88 | 0101 1000 | 0101 | 100 | 0 | miss |
0xbe | 190 | 1011 1110 | 1011 | 111 | 0 | hit |
0x0e | 14 | 0000 1110 | 0000 | 111 | 0 | miss |
0xb5 | 181 | 1011 0101 | 1011 | 010 | 1 | hit |
0x2c | 44 | 0010 1100 | 0010 | 110 | 0 | miss |
0xba | 186 | 1011 1010 | 1011 | 101 | 0 | miss |
0xfd | 240 | 1111 1101 | 1111 | 110 | 1 | miss |
5.2.3 [20] <§§5.3, 5.4> You are asked to optimize a cache design for the given
references. There are three direct-mapped cache designs possible, all with a total of
eight words of data:
■ C1 has 1-word blocks,
■ C2 has 2-word blocks, and
■ C3 has 4-word blocks.
راه حل و توضیحات:
>>> Cache optimize rate: C2 > C1 > C3
منبع سوال: کتاب Computer Organization and Design ARM® EDITION