Ո՞րն է տարբերությունը հայտարարության քեշի և տվյալների քեշի միջև: Բացատրեք մի պարզ օրինակով:


պատասխանել 1:

Դա շատ պարզ է:

Բոլոր վերծանումը կատարելուց հետո կատարվել են բոլոր թարգմանությունները, ապա կատարվել է հրահանգների ցանկացած այլ մշակում

CPU- ն ստանում է բիթային տողեր:

Յուրաքանչյուր հատուկ տող պարունակում է տեղեկատվություն,

  • Ո՞ր գործողությունն է պետք իրականացնել, և որ տվյալներն են պետք իրականացնել:

Ենթադրենք, որ ուզում եք ավելացնել երկու թվեր x և y: Դուք հրահանգ եք գրել որպես x + = y:

Բոլոր բարձրից ցածր մակարդակի փոխարկումներից հետո մենք ստանում ենք մի շարք, ինչպիսին է xxxxyyyyzzzzzzzz (որտեղ x, y, z- ը երկուական բիթեր են):

Այս տողը պարունակում է x, գործողություն կատարելու համար ծածկագիր: Մենք ունենք նաև y և z, դրանք արժեքներ են, որոնք հարկ է ավելացնել:

Այսպիսով, մենք ստանում ենք ձեռնարկ և պահանջվող արժեքներ:

Երկուսն էլ ստացվում են մմ-ից: Ինչպես գիտեք, մենք միշտ փորձում ենք կրճատել որոնման ժամանակը ՝ լինի մմ կամ HD: Այսպիսով մենք պահպանում ենք պահոցը:

Քեշը պահում է իրերը, որոնք կարող են կրկին անհրաժեշտ լինել:

Քանի որ մենք նույնպես պետք է վերացնեինք գործողության հրահանգները, մենք պահում ենք դրանց վերծանված տարբերակները քեշի մեջ, որպեսզի հետագայում դրանք արագ տեսք ունենանք:

Մենք ունենք ցուցումների և տվյալների առանձին պահոց ՝ խուսափելու դրանց միջև հնարավոր խառնաշփոթից:

Ենթադրենք, որ դուք looping եք:

{

համար (i = 0; i <500; i ++)

կուտ <

}

Ինչպես տեսնում եք, loop iterates i. Հետևաբար, իմաստ ունի պահպանում i ++ հրահանգը, որպեսզի այն հնարավոր լինի ավելի արագ մուտք գործել և դրանով իսկ ավելի արագ կատարվել:

Այս հրահանգը, որը պարունակում է երկու մաս, այդպիսով պահվում է առանձին պահոցում: Այն հատվածը, որը պարունակում է iteration- ի շահագործման հրահանգ, պահվում է հրահանգների քեշում: I- ի փոփոխականը պահվում է տվյալների քեշում:


պատասխանել 2:

Ծրագիրը, որն աշխատում է պրոցեսորի վրա, պետք է հիշողությունից վերցնի հրահանգների (կամ կոդ / ծրագիրը) հաջորդականությունը: Միևնույն ժամանակ, ծածկագիրը / հրամանը կարող է անհրաժեշտ լինել տարբեր վայրերից տվյալներ մուտք ունենալու համար:

Օրինակ ՝ ենթադրենք, որ մի ծրագիր կարդում է որևէ տեղ և այն գրում է մեկ այլ վայր (պատճենման ծրագիր ՝ ստորև):

Ներբեռնեք reg0, memA

Պահպանեք reg0, memB

Գոյություն ունեն երկու հրամաններ (բեռնեք, պահեք), որոնք պետք է վերցվեն հրամանի պահոցից, իսկ memA պարունակությունը պետք է նախ կարդացվի, որից հետո այն գրվի memB- ին:

Հայտարարության քէշը նախապատկերում և պահում է հայտարարությունների քեշի բոլոր հայտարարությունները (այս դեպքում ՝ բեռնեք, պահեք), մինչդեռ տվյալների քեշը նախապատկերում է մուտքի հասանելի վայրերը (ինչպես memA- ն):

Առանձին քեշի փոխարեն առանձին քեշի առավելությունն այն է, որ ինչպես հրահանգների հավաքումը, այնպես էլ վերծանումը կարող են իրականացվել բեռի / խնայողությունների կատարումից զատ: