3. Приклад для розрахунку формату адреси для кеш-пам’яті
Розрахувати формати адрес для кеш з наступними параметрами:
Кеш команд: 128 K, 64 блоки
Кеш даних: 256 K, 128 блоки.
Основна пам’ять: 256 Мб.
Процесор звертається до пам’яті за фізичною адресою, а кеш перехоплює це звернення без відома процесора та трактує адресу за своїм форматом, визначеним відносно параметрів кешу.
Вся основна пам’ять ділиться на секції розміром пам’яті кешу. У свою чергу секція ділиться на блоки, а кількість байт у блоці рівна розміру блоку.
Кожний із кешів має свої параметри: розмір пам’яті та кількість блоків. Тому формат адреси для кожного із кешів різні.
Визначення розрядності полів формату адреси кешу команд:
розмір зовнішньої пам’яті MemSize = 256 M = 268435456 Byte;
розмір пам’яті кешу команд InstructionCacheSize = 128 K = 131072 Byte;
розрядність поля Section рівна: NSection=]log2(MemSize/InstructionCacheSize)[=]log2(268435456/131072)[=11;
кількість блоків рівна BlockNumber = 64;
розрядність поля Block рівна: NBlock= ]log2(BlockNumber)[=]log2(64)[= 6;
розмір блоку BlockSize = InstructionChacheSize/BlockNumber = 131072 /64 = 2048 Byte;
розрядність поля Byte рівна NByte =]log2(BlockSize)[=]log2(2048)[= 11.
Формат адреси кешу команд наведено на рис. 8.
31 21 |
20 15 |
14 4 |
3 0 |
Byte(11) |
Block(6) |
Section(11) |
(4) |
Рис. 8. Формат адреси кешу команд
Визначення розрядності полів формату адреси кешу команд:
розмір зовнішньої пам’яті MemSize = 256 M = 268435456 Byte;
розмір пам’яті кешу команд DataChacheSize = 256 K = 262144 Byte;
розрядність поля Section рівна: NSection=]log2(MemSize/DataChacheSize)[=]log2(268435456 /262144 Byte)[=10;
кількість блоків рівна BlockNumber = 128;
розрядність поля Block рівна: NBlock= ]log2(BlockNumber)[=]log2(128)[= 7;
розмір блоку BlockSize = DataChacheSize/BlockNumber = 262144 /128= 2048 Byte;
розрядність поля Byte рівна NByte =]log2(BlockSize)[=]log2(2048)[= 11.
Формат адреси кешу даних наведено на рис. 9.
31 21 |
20 15 |
14 4 |
3 0 |
Byte(11) |
Block(7) |
Section(10) |
(4) |
Рис. 9. - Формат адреси кешу даних
4. Приклад розрахунку розрядності шини адрес для взаємодії з основною пам’яттю
Розрахувати кількість елементів пам’яті, з яких побудована основна пам’ять, кількість комірок заданої розрядності та мінімальну розрядність шини адрес для доступу до основної пам’яті з наступними параметрами:
Розрядність шини даних: 16 біт;
Елементи пам’яті, на яких
побудована основна пам’ять
комп’ютера: 1Кх8;
Об’єм основної пам’яті: 32 Мб.
Розрахунок кількості елементів пам’яті:
Позначення елементів пам’яті 1Кх8 слід розуміти таким чином:
1К - кількість комірок в пам’яті;
8 - розрядність (кратна байту).
Для побудови основної пам’яті об’ємом 32 Мб на елеменах пам’яті 1Кх8 нам необхідно:
Визначити об’єм основної пам’яті в Кілобайтах: ММ=32*1024=32768 Кбайт.
Визначити об’єм одного елемента пам’яті в Кілобайтах: SM=1*x Кбайт. (х=у/8, де у-розрядність елемента пам’яті.)
Визначити кількість елементів пам’яті N можна поділивши об’єм основної пам’яті ММ на об’єм пам’яті одного елемента SM. N=32768/1=32768.
Розрахунок кількості комірок:
Об’єм основної пам’яті ММ=32768 Кб, розрядність кожної комірки пам’яті R=16.
Для визначення кількості комірок NM нам потрібно визначити об’єм основної пам’яті в бітах ММb та поділити його на розрядність комірки R.
MMb=MM*1024*8=32768*1024*8=268435456.
NM=MMb/R=268435456/16=16777216.
Розрахунок розрядності шини адрес:
Розрядність шини адрес RA визначається за формулою:
RA = ]Log2NM[ = ]Log216777216[ = 24.
