Я безнадежно застрял на домашней задаче, и мне бы хотелось, чтобы мне помогли ее лучше понять. Вот что мне дали:
- Базовый CPI ЦП = 2, тактовая частота = 2 ГГц
- Основной кэш, процент промахов / инструкции = 7%
- L-2 Время доступа к кэш-памяти = 15 нс
- Кэш L-2, коэффициент локальных промахов / инструкция = 30%
- L-3 Время доступа к кэш-памяти = 30нс
- L-3 Cache, Global Miss Rate / Instruction = 3%, Время доступа к основной памяти = 150 нс
Каков эффективный CPI?
Насколько я понимаю, мне нужно рассчитать штраф за промах для каждого уровня кеша.
- Штраф за промах L1 = время доступа L2 = 15 нс / (1 нс / 2 куб. См) = 30 тактов
- Штраф за промах L2 = время доступа L3 = 30 нс / (1 нс / 2 куб. См) = 60 тактов
- Штраф за промах L3 = время доступа MM = 150 нс / (1 нс / 2 куб. См) = 300 тактов
Теперь мне нужно рассчитать эффективный CPI. Здесь я немного запутался.
Я считаю, что формула должна быть такой:
CPI = BaseCPI + (% L1 MR / Instr * L1 штраф за промах) + (% L1 MR / Instr *% L2 MR / Instr * L2 штраф за промах) + (% Global MR / Instr * L3 Miss Penalty)
Если я сделаю это, я получу
ИПЦ = 2,0 + (0,07 * 30) + (0,07 * 0,3 * 60) + (0,03 * 300) = 14,36
После того, как я отправил электронное письмо моему инструктору, потому что никто в классе не понял 1-2-минутного объяснения глобального и локального, мне сказали, что мой ответ близок, но неверен. Я был бы признателен, если бы кто-нибудь мог дать некоторое представление или хотя бы указать мне на хороший учебник. Я могу понять, как вычислить эффективный CPI для кешей 1 и 2 уровня. Переход на 3 сбивает меня с толку.