Как рассчитать эффективный CPI для трехуровневого кеша

Я безнадежно застрял на домашней задаче, и мне бы хотелось, чтобы мне помогли ее лучше понять. Вот что мне дали:

  1. Базовый CPI ЦП = 2, тактовая частота = 2 ГГц
  2. Основной кэш, процент промахов / инструкции = 7%
  3. L-2 Время доступа к кэш-памяти = 15 нс
  4. Кэш L-2, коэффициент локальных промахов / инструкция = 30%
  5. L-3 Время доступа к кэш-памяти = 30нс
  6. 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 сбивает меня с толку.


person user2990107    schedule 25.11.2013    source источник
comment
Связанное обсуждение: http://stackoverflow.com/questions/20483999/calculating-actual-effective-cpi-for-3-level-cache/20617511   -  person chus    schedule 16.12.2013


Ответы (6)


Что делать, если это так: для двухуровневого кеша Эффективный CPI равен:

CPi = CPI (нормальный) + MissRAteL1 * MissPenaltyL2 + GlobalMissRAte * TotalMissPenalty

тогда для трехуровневого кеша это может быть:

CPI = CPI + MissRateL1 * MissPenaltyL2 + (MISSRATEL2 / MissRAteL1) (MissPEnaltyL1 + MissPEnaltyL2) + GlobalMissRate (MissPEnaltyL1 + MissPEnaltyL2 + MissPEnaltyL3)

ИПЦ = 2 + 7% x60 + (7% / 30%) x (60 + 30) + 3% x (300 + 60 + 90) ..

person AnnaC    schedule 25.08.2016

Возможно, стоит подумать об этом с другой стороны. Если мы предположим, что мы собираемся выполнить 1 000 000 инструкций, учитывая частоту попаданий в ваш основной кеш, 93% из них будут выполнены и потребуют только 2 CPI. 7% или 70 000 потребуется для достижения более низких уровней кэш-памяти. Из этих 70 000 70% (49 000) попадут в L2 и потребуют 15 нс (или 30 CPI). Остается 21 000, которые должны поступить из L3 или ниже. 97% (20370) попадет в L3 и потребует 60CPI. Остальные 630 потребуют доступа к памяти с разрешением 300CPI.

Таким образом, общее количество тактов для всей стопки составляет 930 000 * 2 + 49 000 * 30 + 20370 * 60 + 630 * 300, что в сумме составляет 4 741 200, что с учетом количества команд 1000000 дает эффективный CPI 4,7412.

Это все еще может быть неправильным, так как я не совсем уверен, в чем разница между глобальным / локальным коэффициентом промахов в этом конкретном вопросе и как его применить здесь, но это, по крайней мере, показывает другой подход, чтобы помочь понять вопрос . Он также предполагает, что, например, штраф за промах в L2 в 60 тактов является полным штрафом - другими словами, доступ, который пропускает в первичном и L2 и который должен извлекать из L3, занимает всего 60 тактов, или это занимает 60 тактов, чтобы получить его из L3 в L2, а затем еще 30 тактов, чтобы перевести его из L2 в первичный, а затем обычные 2 такта, в общей сложности 92 такта при промахе L2? Может, в этом разница между локальным и глобальным?

person twalberg    schedule 25.11.2013
comment
Во-первых, спасибо за ответ. Я сделал что-то похожее на то, что вы предложили вначале. После повторного разговора с моим профессором он сказал, что моя формула верна. Думаю, моя проблема в штрафных промахах. Если я правильно прочитал ваш пост, это то, что вы тоже пытаетесь показать. Вернемся к вычислению некоторых цифр. - person user2990107; 26.11.2013

  • Привет, ребята, я тоже в 242, я тоже не знаю, правильно ли это, но это то, что у меня есть ..

    штраф за основной промах = 150 нс / (1/2) = 300 циклов. L2 промах = 15 нс / (1/2) = 30 циклов. L3 miss = 30 нс / (1/2) = 60 циклов.

    поэтому cpi = 2 + (. 07 * 300) + (. 07 * .3 * 30) + (. 03 * 60) = 25,43

person Heather    schedule 26.11.2013

Привет, я написал ему по электронной почте, спрашивая об этом решении

Эффективный ИПЦ = 2,0 + 0,07 x 30 + 0,30 x 60 + 0,03 x 300 = 31,1

и его ответ был, что L1 и L3 были правильными, но что я должен был принять во внимание местную частоту промахов для L2. Пока не знаю, что это значит, но надеюсь, что эта небольшая информация поможет

person user3037524    schedule 26.11.2013

Проблема WCU, правда? У меня такой же класс.

Проверьте D2L. Страницы 18-20 полного предоставленного pdf-файла главы 5. В необходимом учебнике «Организация и дизайн компьютера» довольно подробно описаны подобные проблемы. С первого взгляда я думаю, что вы, возможно, выполняете несколько неправильных операций. Правильные числа ... неправильные операции. Сам работаю над проблемой. Я опубликую здесь, если найду свой ответ

person Community    schedule 26.11.2013

После разговора с профессором он сказал, что эта формула верна, но сказал мне, что не может сказать мне, правильный ответ или нет. Казалось, он намекает на то, что это правильно, но это могло быть просто недопониманием из-за языкового барьера.

person user2803198    schedule 26.11.2013