У чым розніца паміж кэшам заяў і кэшам дадзеных? Растлумачце простым прыкладам.


адказ 1:

Гэта вельмі проста.

Пасля таго, як была зроблена расшыфроўка, былі зроблены ўсе пераклады, затым была праведзена любая іншая апрацоўка інструкцый

CPU атрымлівае бітныя радкі.

Кожная пэўная радок змяшчае інфармацыю ад,

  • Якія аперацыі неабходна правесці і якія дадзеныя неабходна правесці?

Дапусцім, вы хочаце дадаць два ліку x і y. Вы напісалі інструкцыю як x + = y.

Пасля ўсіх пераўтварэнняў высокага да нізкага ўзроўню мы атрымліваем радок як xxxxyyyyzzzzzzzz (дзе x, y, z - бінарныя біты).

Гэты радок утрымлівае х, код для аперацыі, якую трэба выканаць. У нас таксама ёсць y і z, яны - значэнні, якія трэба дадаць.

Такім чынам мы атрымліваем кіраўніцтва і неабходныя значэнні.

Абодва атрыманы з мм. Як вы ведаеце, мы заўсёды імкнемся скараціць час пошуку, няхай гэта будзе мм альбо hdd. Такім чынам, мы падтрымліваем кэш.

У кэшы захоўваюцца рэчы, якія могуць спатрэбіцца зноў.

Паколькі нам таксама прыйшлося расшыфроўваць інструкцыі па эксплуатацыі, мы захоўваем іх дэшыфраваныя версіі ў кэшы, каб мы маглі іх хутка шукаць у будучыні.

У нас ёсць асобны кэш інструкцый і дадзеных, каб пазбегнуць магчымых блытаніны паміж імі, пра якія ёсць.

Дапусцім, вы цыкла.

{

для (i = 0; i <500; i ++)

cout <

}}

Як бачыце, пятля i iтэрыруе. Такім чынам, мае сэнс кэшаваць інструкцыю i ++, каб атрымаць доступ да яе хутчэй і тым самым выконваць хутчэй.

Такім чынам, гэтая інструкцыя, якая змяшчае дзве часткі, захоўваецца ў асобным кэшы. Частка, якая ўтрымлівае інструкцыю аперацыі ітэрацыі, захоўваецца ў кэшы інструкцый. Пераменная i захоўваецца ў кэшы дадзеных.


адказ 2:

Праграма, якая працуе на працэсары, павінна атрымаць паслядоўнасць інструкцый (альбо код / ​​праграма) з памяці. У той жа час, код / ​​каманда можа спатрэбіцца для доступу да дадзеных з розных месцаў.

Напрыклад, выкажам здагадку, што праграма чытае месцазнаходжанне і запісвае яго ў іншае месца (праграма капіявання, як паказана ніжэй).

Загрузіце reg0, memA

Захаваць reg0, memB

Ёсць дзве каманды (загрузіць, захаваць), якія неабходна атрымаць з сховішчаў каманд, і змест memA неабходна спачатку прачытаць, а потым запісаць у memB

Кэш аператара папярэдне выгружае і захоўвае ўсе выказванні (у гэтым выпадку загружае, захоўвае) у кэшы выканаўчых дадзеных, у той час як кэш дадзеных папярэдне выбірае месцы, да якіх звяртаецца (напрыклад, memA).

Перавага асобнага кэша, а не аднаго кэша, заключаецца ў тым, што атрыманне і расшыфроўка інструкцый могуць быць выкананы асобна ад выканання загрузкі / захавання.