Ո՞րն է տարբերությունը հայտարարության քեշի և տվյալների քեշի միջև: Բացատրեք մի պարզ օրինակով:
պատասխանել 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- ն):
Առանձին քեշի փոխարեն առանձին քեշի առավելությունն այն է, որ ինչպես հրահանգների հավաքումը, այնպես էլ վերծանումը կարող են իրականացվել բեռի / խնայողությունների կատարումից զատ: