Êýø ïðîöåññîðà
Êýø ìèêðîïðîöåññîðà â êýø (ñâåðõîïåðàòèâíàÿ ïàìÿòü), èñïîëüçóåìûé ìèêðîïðîöåññîðîì êîìïüþòåðà äëÿ óìåíüøåíèÿ ñðåäíåãî âðåìåíè äîñòóïà ê êîìïüþòåðíîé ïàìÿòè. ßâëÿåòñÿ îäíèì èç âåðõíèõ óðîâíåé èåðàðõèè ïàìÿòè[1]. Êýø èñïîëüçóåò íåáîëüøóþ, î÷åíü áûñòðóþ ïàìÿòü (îáû÷íî òèïà SRAM), êîòîðàÿ õðàíèò êîïèè ÷àñòî èñïîëüçóåìûõ äàííûõ èç îñíîâíîé ïàìÿòè. Åñëè áîëüøàÿ ÷àñòü çàïðîñîâ â ïàìÿòü áóäåò îáðàáàòûâàòüñÿ êýøåì, ñðåäíÿÿ çàäåðæêà îáðàùåíèÿ ê ïàìÿòè áóäåò ïðèáëèæàòüñÿ ê çàäåðæêàì ðàáîòû êýøà.
Êîãäà ïðîöåññîðó íóæíî îáðàòèòüñÿ â ïàìÿòü äëÿ ÷òåíèÿ èëè çàïèñè äàííûõ, îí ñíà÷àëà ïðîâåðÿåò, äîñòóïíà ëè èõ êîïèÿ â êýøå.  ñëó÷àå óñïåõà ïðîâåðêè ïðîöåññîð ïðîèçâîäèò îïåðàöèþ èñïîëüçóÿ êýø, ÷òî áûñòðåå èñïîëüçîâàíèÿ áîëåå ìåäëåííîé îñíîâíîé ïàìÿòè. Ïîäðîáíåå î çàäåðæêàõ ïàìÿòè ñì. Çàäåðæêè (àíãë. SDRAM latency) SDRAM: tCAS, tRCD, tRP, tRAS.
Áîëüøèíñòâî ñîâðåìåííûõ ìèêðîïðîöåññîðîâ äëÿ êîìïüþòåðîâ è ñåðâåðîâ èìåþò êàê ìèíèìóì òðè íåçàâèñèìûõ êýøà: êýø èíñòðóêöèé äëÿ óñêîðåíèÿ çàãðóçêè ìàøèííîãî êîäà, êýø äàííûõ äëÿ óñêîðåíèÿ ÷òåíèÿ è çàïèñè äàííûõ, è áóôåð àññîöèàòèâíîé òðàíñëÿöèè (TLB) äëÿ óñêîðåíèÿ òðàíñëÿöèè âèðòóàëüíûõ (ìàòåìàòè÷åñêèõ) àäðåñîâ â ôèçè÷åñêèå, êàê äëÿ èíñòðóêöèé, òàê è äëÿ äàííûõ. Êýø äàííûõ ÷àñòî ðåàëèçóåòñÿ â âèäå ìíîãîóðîâíåâîãî êýøà (L1, L2, L3).
Óâåëè÷åíèå ðàçìåðà êýø-ïàìÿòè ïîëîæèòåëüíî âëèÿåò íà ïðîèçâîäèòåëüíîñòü ïî÷òè âñåõ ïðèëîæåíèé[2].
Ñîäåðæàíèå |
[ïðàâèòü] Ïðèíöèï ðàáîòû
Äàííûé ðàçäåë îïèñûâàåò òèïè÷íûé êýø äàííûõ è íåêîòîðûå âèäû êýøåé èíñòðóêöèé; TLB ìîæåò áûòü óñòðîåí ñëîæíåå, à êýø èíñòðóêöèé â ïðîùå. Íà äèàãðàììå ñïðàâà èçîáðàæåíû îñíîâíàÿ è êýø ïàìÿòü. Êàæäàÿ ñòðîêà â ãðóïïà ÿ÷ååê ïàìÿòè ñîäåðæèò äàííûå, îðãàíèçîâàííûå â êýø-ëèíèè. Ðàçìåð êàæäîé êýø-ëèíèè ìîæåò ðàçëè÷àòüñÿ â ðàçíûõ ïðîöåññîðàõ, íî äëÿ áîëüøèíñòâà x86-ïðîöåññîðîâ îí ñîñòàâëÿåò 64 áàéòà. Ðàçìåð êýø-ëèíèè îáû÷íî áîëüøå ðàçìåðà äàííûõ, ê êîòîðîìó âîçìîæåí äîñòóï èç îäíîé ìàøèííîé êîìàíäû (òèïè÷íûå ðàçìåðû îò 1 äî 16 áàéò). Êàæäàÿ ãðóïïà äàííûõ â ïàìÿòè ðàçìåðîì â 1 êýø-ëèíèþ èìååò ïîðÿäêîâûé íîìåð. Äëÿ îñíîâíîé ïàìÿòè ýòîò íîìåð ÿâëÿåòñÿ àäðåñîì ïàìÿòè ñ îòáðîøåííûìè ìëàäøèìè áèòàìè.  êýøå êàæäîé êýø-ëèíèè äîïîëíèòåëüíî ñòàâèòñÿ â ñîîòâåòñòâèå òåã, êîòîðûé ÿâëÿåòñÿ àäðåñîì ïðîäóáëèðîâàííûõ â ýòîé êýø-ëèíèè äàííûõ â îñíîâíîé ïàìÿòè.
Ïðè äîñòóïå ïðîöåññîðà â ïàìÿòü ñíà÷àëà ïðîèçâîäèòñÿ ïðîâåðêà, õðàíèò ëè êýø çàïðàøèâàåìûå èç ïàìÿòè äàííûå. Äëÿ ýòîãî ïðîèçâîäèòñÿ ñðàâíåíèå àäðåñà çàïðîñà ñî çíà÷åíèÿìè âñåõ òåãîâ êýøà, â êîòîðûõ ýòè äàííûå ìîãóò õðàíèòñÿ. Ñëó÷àé ñîâïàäåíèÿ ñ òåãîì êàêîé-ëèáî êýø-ëèíèè íàçûâàåòñÿ ïîïàäàíèåì â êýø (àíãë. cache hit), îáðàòíûé æå ñëó÷àé íàçûâàåòñÿ êýø ïðîìàõîì (àíãë. cache miss). Ïîïàäàíèå â êýø ïîçâîëÿåò ïðîöåññîðó íåìåäëåííî ïðîèçâåñòè ÷òåíèå èëè çàïèñü äàííûõ â êýø-ëèíèè ñ ñîâïàâøåì òåãîì. Îòíîøåíèå êîëè÷åñòâà ïîïàäàíèé â êýø ê îáùåìó êîëè÷åñòâó çàïðîñîâ ê ïàìÿòè íàçûâàþò ðåéòèíãîì ïîïàäàíèé (àíãë. hit rate), îíî ÿâëÿåòñÿ ìåðîé ýôôåêòèâíîñòè êýøà äëÿ âûáðàííîãî àëãîðèòìà èëè ïðîãðàììû.
 ñëó÷àå ïðîìàõà, â êýøå âûäåëÿåòñÿ íîâàÿ çàïèñü, â òåã êîòîðîé çàïèñûâàåòñÿ àäðåñ òåêóùåãî çàïðîñà, à â ñàìó êýø-ëèíèþ â äàííûå èç ïàìÿòè ïîñëå èõ ïðî÷òåíèÿ ëèáî äàííûå äëÿ çàïèñè â ïàìÿòü. Ïðîìàõè ïî ÷òåíèþ çàäåðæèâàþò èñïîëíåíèå, ïîñêîëüêó îíè òðåáóþò çàïðîñà äàííûõ â áîëåå ìåäëåííîé îñíîâíîé ïàìÿòè. Ïðîìàõè ïî çàïèñè ìîãóò íå äàâàòü çàäåðæêó, ïîñêîëüêó çàïèñûâàåìûå äàííûå ñðàçó ìîãóò áûòü ñîõðàíåíû â êýøå, à çàïèñü èõ â îñíîâíóþ ïàìÿòü ìîæíî ïðîèçâåñòè â ôîíîâîì ðåæèìå. Ðàáîòà êýøåé èíñòðóêöèé âî ìíîãîì ïîõîæà íà âûøåïðèâåäåííûé àëãîðèòì ðàáîòû êýøà äàííûõ, íî äëÿ èíñòðóêöèé âûïîëíÿþòñÿ òîëüêî çàïðîñû íà ÷òåíèå. Êýøè èíñòðóêöèé è äàííûõ ìîãóò áûòü ðàçäåëåíû äëÿ óâåëè÷åíèÿ ïðîèçâîäèòåëüíîñòè (ïðèíöèï, èñïîëüçóåìûé â Ãàðâàðäñêîé àðõèòåêòóðå) èëè îáúåäèíåíû äëÿ óïðîùåíèÿ àïïàðàòíîé ðåàëèçàöèè.
Äëÿ äîáàâëåíèÿ äàííûõ â êýø ïîñëå êýø ïðîìàõà ìîæåò ïîòðåáîâàòüñÿ âûòåñíåíèå (àíãë. evict) ðàíåå çàïèñàííûõ äàííûõ. Äëÿ âûáîðà çàìåùàåìîé ëèíåéêè èñïîëüçóåòñÿ ýâðèñòèêà, íàçûâàåìàÿ ïîëèòèêà çàìåùåíèÿ (àíãë. replacement policy). Îñíîâíîé ïðîáëåìîé àëãîðèòìà ÿâëÿåòñÿ ïðåäñêàçàíèå, êàêàÿ ëèíåéêà âåðîÿòíåå âñåãî íå ïîòðåáóåòñÿ äëÿ ïîñëåäóþùèõ îïåðàöèé. Êà÷åñòâåííûå ïðåäñêàçàíèÿ ñëîæíû, è àïïàðàòíûå êýøè èñïîëüçóþò ïðîñòûå ïðàâèëà, òàêèå êàê LRU. Ïîìåòêà íåêîòîðûõ îáëàñòåé ïàìÿòè êàê íåêýøèðóåìûõ (àíãë. non cacheable) óëó÷øàåò ïðîèçâîäèòåëüíîñòü çà ñ÷åò çàïðåòà êýøèðîâàíèÿ ðåäêî èñïîëüçóåìûõ äàííûõ. Ïðîìàõè äëÿ òàêîé ïàìÿòè íå ñîçäàþò êîïèþ äàííûõ â êýøå.
Ïðè çàïèñè äàííûõ â êýø, äîëæåí ñóùåñòâîâàòü îïðåäåëåííûé ìîìåíò âðåìåíè, êîãäà îíè áóäóò çàïèñàíû â îñíîâíóþ ïàìÿòü. Ýòî âðåìÿ êîíòðîëèðóåòñÿ ïîëèòèêîé çàïèñè (àíãë. write policy). Äëÿ êýøåé ñî ñêâîçíîé çàïèñüþ (àíãë. write-through), ëþáàÿ çàïèñü â êýø ïðèâîäèò ê íåìåäëåííîé çàïèñè â ïàìÿòü. Äðóãîé òèï êýøåé, îáðàòíàÿ çàïèñü àíãë. write-back (èíîãäà òàêæå íàçûâàåìûé copy-back) îòêëàäûâàåò çàïèñü íà áîëåå ïîçäíåå âðåìÿ. Â òàêèõ êýøàõ îòñëåæèâàåòñÿ ñîñòîÿíèå êýø ëèíååê åùå íå ñáðîøåííûõ â ïàìÿòü (ïîìåòêà áèòîì «ãðÿçíûé» àíãë. dirty). Çàïèñü â ïàìÿòü ïðîèçâîäèòñÿ ïðè âûòåñíåíèè ïîäîáíîé ëèíåéêè èç êýøà. Òàêèì îáðàçîì, ïðîìàõ â êýøå, èñïîëüçóþùåì ïîëèòèêó îáðàòíîé çàïèñè, ìîæåò ïîòðåáîâàòü äâóõ îïåðàöèé äîñòóïà â ïàìÿòü, îäèí äëÿ ñáðîñà ñîñòîÿíèÿ ñòàðîé ëèíåéêè è äðóãîé â äëÿ ÷òåíèÿ íîâûõ äàííûõ.
Ñóùåñòâóþò òàêæå ñìåøàííûå ïîëèòèêè. Êýø ìîæåò áûòü ñî ñêâîçíîé çàïèñüþ (àíãë. write-through), íî äëÿ óìåíüøåíèÿ êîëè÷åñòâà òðàíçàêöèé íà øèíå çàïèñè ìîãóò âðåìåííî ïîìåùàòüñÿ â î÷åðåäü è îáúåäèíÿòüñÿ äðóã ñ äðóãîì.
Äàííûå â îñíîâíîé ïàìÿòè ìîãóò èçìåíÿòüñÿ íå òîëüêî ïðîöåññîðîì, íî è ïåðèôåðèåé, èñïîëüçóþùåé ïðÿìîé äîñòóï ê ïàìÿòè, èëè äðóãèìè ïðîöåññîðàìè â ìíîãîïðîöåññîðíîé ñèñòåìå. Èçìåíåíèå äàííûõ ïðèâîäèò ê óñòàðåâàíèþ èõ êîïèè â êýøå (ñîñòîÿíèå stale).  äðóãîé ðåàëèçàöèè, êîãäà îäèí ïðîöåññîð èçìåíÿåò äàííûå â êýøå, êîïèè ýòèõ äàííûõ â êýøàõ äðóãèõ ïðîöåññîðîâ áóäóò ïîìå÷åíû êàê stale. Äëÿ ïîääåðæàíèÿ ñîäåðæèìîãî íåñêîëüêèõ êýøåé â àêòóàëüíîì ñîñòîÿíèè èñïîëüçóåòñÿ ñïåöèàëüíûé ïðîòîêîë êýø êîãåðåíòíîñòè.
[ïðàâèòü] Ñòðóêòóðà çàïèñè â êýøå
Òèïè÷íàÿ ñòðóêòóðà çàïèñè â êýøå
| Áëîê äàííûõ | òåã | èíäåêñ | ñìåùåíèå | áèò àêòóàëüíîñòè |
Áëîê äàííûõ (êýø-ëèíèÿ) ñîäåðæèò íåïîñðåäñòâåííóþ êîïèþ äàííûõ èç îñíîâíîé ïàìÿòè. Àäðåñ ïàìÿòè ðàçäåëÿåòñÿ (îò ñòàðøèõ áèò ê ìëàäøèì) íà Òåã, èíäåêñ è ñìåùåíèå. Áèò àêòóàëüíîñòè îçíà÷àåò, ÷òî äàííàÿ çàïèñü ñîäåðæèò àêòóàëüíóþ (ñàìóþ ñâåæóþ) êîïèþ. Äëèíà ïîëÿ èíäåêñà ðàâíà
áèò è ñîîòâåòñòâóåò ðÿäó (ñòðîêå) êýøà, èñïîëüçóåìîé äëÿ çàïèñè. Äëèíà ñìåùåíèÿ ðàâíà
.
[ïðàâèòü] Àññîöèàòèâíîñòü
Àññîöèàòèâíîñòü ÿâëÿåòñÿ êîìïðîìèññîì. Ïðîâåðêà áîëüøåãî ÷èñëà çàïèñåé òðåáóåò áîëüøå ýíåðãèè, ïëîùàäè ÷èïà, è, ïîòåíöèàëüíî, âðåìåíè. Åñëè áû ñóùåñòâîâàëî 10 ìåñò, â êîòîðûå àëãîðèòì âûòåñíåíèÿ ìîã áû îòîáðàçèòü ìåñòî â ïàìÿòè, òîãäà ïðîâåðêà íàëè÷èÿ ýòîãî ìåñòà â êýøå ïîòðåáîâàëà áû ïðîñìîòðà 10 çàïèñåé â êýøå. Ñ äðóãîé ñòîðîíû, êýøè ñ âûñîêîé àññîöèàòèâíîñòüþ ïîäâåðæåíû ìåíüøåìó êîëè÷åñòâó ïðîìàõîâ (ñì íèæå êîíôëèêòóþùèå ïðîìàõè) è ïðîöåññîð òðàòèò ìåíüøå âðåìåíè íà ÷òåíèÿ èç ìåäëåííîé îñíîâíîé ïàìÿòè. Ñóùåñòâóåò ýìïèðè÷åñêîå íàáëþäåíèå, ÷òî óäâîåíèå àññîöèàòèâíîñòè (îò ïðÿìîãî îòîáðàæåíèÿ ê 2-õêàíàëüíîé, èëè îò 2-õ ê 4-õ êàíàëüíîé) èìååò ïðèìåðíî òàêîå æå âëèÿíèå íà èíòåíñèâíîñòü ïîïàäàíèé (hit rate), ÷òî è óäâîåíèå ðàçìåðà êýøà. Óâåëè÷åíèå àññîöèàòèâíîñòè ñâûøå 4õ êàíàëîâ ïðèíîñèò ìåíüøèé ýôôåêò äëÿ óìåíüøåíèÿ êîëè÷åñòâà ïðîìàõîâ (miss rate), è, îáû÷íî, ïðîèçâîäèòñÿ ïî äðóãèì ïðè÷èíàì, íàïðèìåð èç-çà ïåðåñå÷åíèÿ âèðòóàëüíûõ àäðåñîâ.
 ïîðÿäêå óõóäøåíèÿ (óâåëè÷åíèÿ äëèòåëüíîñòè ïðîâåðêè íà ïîïàäàíèå) è óëó÷øåíèÿ (óìåíüøåíèÿ êîëè÷åñòâà ïðîìàõîâ):
- êýø ïðÿìîãî îòîáðàæåíèÿ (àíãë. direct mapped cache) â íàèëó÷øåå âðåìÿ ïîïàäàíèÿ, è, ñîîòâåòñòâåííî, ëó÷øèé âàðèàíò äëÿ áîëüøèõ ïàëëåòíûõ êýøåé;
- 2-õ êàíàëüíûé ìíîæåñòâåííî-àññîöèàòèâíûé êýø àíãë. 2-way set associative cache;
- 2-õ êàíàëüíûé skewed àññîöèàòèâíûé êýø (àíãë. «the best tradeoff for â. caches whose sizes are in the range 4K-8K bytes» â André Seznec);
- 4-õ êàíàëüíûé ìíîæåñòâåííî-àññîöèàòèâíûé êýø (àíãë. 4-way set associative cache);
- ïîëíîñòüþ àññîöèàòèâíûé êýø, àíãë. fully associative cache â íàèëó÷øèé (ñàìûé íèçêèé) ïðîöåíò ïðîìàõîâ (miss rate), è ëó÷øèé âàðèàíò ïðè ÷ðåçâû÷àéíî âûñîêèõ çàòðàòàõ ïðè ïðîìàõå (miss penalty).
[ïðàâèòü] Ïñåâäî-àññîöèàòèâíûé êýø
| Ýòîò ðàçäåë ñòàòüè åù¸ íå íàïèñàí.
Ñîãëàñíî çàìûñëó îäíîãî èç ó÷àñòíèêîâ Ýíöèêëîïåäèè, íà ýòîì ìåñòå äîëæåí ðàñïîëàãàòüñÿ ñïåöèàëüíûé ðàçäåë.
Âû ìîæåòå ïîìî÷ü ïðîåêòó, íàïèñàâ ýòîò ðàçäåë. |
[ïðàâèòü] Âèäû ïðîìàõîâ
Ïðîìàõ ïî ÷òåíèþ èç êýøà èíñòðóêöèé. Îáû÷íî äàåò î÷åíü áîëüøóþ çàäåðæêó, ïîñêîëüêó ïðîöåññîð íå ìîæåò ïðîäîëæàòü èñïîëíåíèå ïðîãðàììû (ïî êðàéíåé ìåðå òåêóùåãî ïîòîêà èñïîëíåíèÿ) è âûíóæäåí ïðîñòàèâàòü â îæèäàíèè çàãðóçêè èíñòðóêöèè èç ïàìÿòè.
Ïðîìàõ ïî ÷òåíèþ èç êýøà äàííûõ. Îáû÷íî äàåò ìåíüøóþ çàäåðæêó, ïîñêîëüêó èíñòðóêöèè, íå çàâèñÿùèå îò çàïðîøåííûõ äàííûõ ìîãóò ïðîäîëæàòü èñïîëíÿòüñÿ, ïîêà çàïðîñ îáðàáàòûâàåòñÿ â îñíîâíîé ïàìÿòè. Ïîñëå ïîëó÷åíèÿ äàííûõ èç ïàìÿòè ìîæíî ïðîäîëæàòü èñïîëíåíèå çàâèñèìûõ èíñòðóêöèé.
Ïðîìàõ ïî çàïèñè â êýø äàííûõ. Îáû÷íî äàåò íàèìåíüøóþ çàäåðæêó, ïîñêîëüêó çàïèñü ìîæåò áûòü ïîñòàâëåíà â î÷åðåäü è ïîñëåäóþùèå èíñòðóêöèè ïðàêòè÷åñêè íå îãðàíè÷åíû â ñâîèõ âîçìîæíîñòÿõ. Ïðîöåññîð ìîæåò ïðîäîëæàòü ñâîþ ðàáîòó, êðîìå ñëó÷àåâ ïðîìàõà ïî çàïèñè ñ ïîëíîñòüþ çàïîëíåííîé î÷åðåäüþ.
[ïðàâèòü] Êàòåãîðèè ïðîìàõîâ (Three Cs)
- Compulsory misses â ïðîìàõè, âûçâàííûå ïåðâûì óïîìèíàíèåì çàïðîøåííîãî àäðåñà. Ðàçìåðû êýøåé è èõ àññîöèàòèâíîñòü íå âëèÿþò íà êîëè÷åñòâî äàííûõ ïðîìàõîâ. Ïðåäïîäêà÷êà, êàê ïðîãðàììíàÿ, òàê è àïïàðàòíàÿ, (Prefetching) ìîæåò ïîìî÷ü, òàêæå êàê è óâåëè÷åíèå ðàçìåðà êýø-ëèíèè (â êà÷åñòâå âèäà àïïàðàòíîé ïðåäïîäêà÷êè). Òàêèå ïðîìàõè èíîãäà íàçûâàþòñÿ Õîëîäíûìè.
- Capacity misses â ïðîìàõè, âûçâàííûå èñêëþ÷èòåëüíî êîíå÷íûì ðàçìåðîì êýøà, ïðîèñõîäÿùèå âíå çàâèñèìîñòè îò ñòåïåíè àññîöèàòèâíîñòè èëè ðàçìåðà êýø-ëèíèè. Ãðàôèê òàêèõ ïðîìàõîâ îòíîñèòåëüíî ðàçìåðà êýøà ìîæåò äàòü íåêîòîðóþ ìåðó âðåìåííîé ëîêàëüíîñòè (temporal locality) íåêîòîðîãî íàáîðà çàïðîñîâ â ïàìÿòü. Ñòîèò çàìåòèòü, ÷òî íå ñóùåñòâóåò ïîíÿòèÿ ïîëíîãî êýøà, ïóñòîãî êýøà, èëè ïî÷òè ïîëíîãî êýøà, òàê êàê êýøè ïðîöåññîðà ïî÷òè âñå âðåìÿ èìåþò êýø ëèíèè â çàíÿòîì ñîñòîÿíèè, è, çíà÷èò, ïðàêòè÷åñêè êàæäîå çàâåäåíèå íîâîé ëèíèè ïîòðåáóåò ãàøåíèÿ óæå çàíÿòîé.
- Conflict misses â ïðîìàõè, âûçâàííûå êîíôëèêòîì. Èõ ìîæíî èçáåæàòü, åñëè êýø áû íå âûòåñíèë çàïèñü ðàíåå. Ìîæíî äîïîëíèòåëüíî ðàçäåëèòü íà ïðîìàõè, âûçâàííûå îòîáðàæåíèåì (êîíêðåòíûì çíà÷åíèåì àññîöèàòèâíîñòè) è ïðîìàõè çàìåùåíèÿ, êîòîðûå âûçâàíû êîíêðåòíûì àëãîðèòìîì âûáîðà çàïèñåé äëÿ çàìåùåíèÿ.
[ïðàâèòü] Òðàíñëÿöèÿ àäðåñîâ
Áîëüøàÿ ÷àñòü ïðîöåññîðîâ îáùåãî íàçíà÷åíèÿ ðåàëèçóåò êàêîé-ëèáî âàðèàíò âèðòóàëüíîé ïàìÿòè. Êðàòêî ãîâîðÿ, êàæäàÿ ïðîãðàììà, èñïîëíÿþùàÿñÿ íà ìàøèíå âèäèò ñîáñòâåííîå óïðîùåííîå àäðåñíîå ïðîñòðàíñòâî, ñîäåðæàùåå êîä è äàííûå òîëüêî ýòîé ïðîãðàììû. Ëþáàÿ ïðîãðàììà èñïîëüçóåò ñâîå âèðòóàëüíîå àäðåñíîå ïðîñòðàíñòâî âíå çàâèñèìîñòè îò åãî ìåñòîïîëîæåíèÿ â ôèçè÷åñêîé ïàìÿòè.
Íàëè÷èå âèðòóàëüíîé ïàìÿòè òðåáóåò îò ïðîöåññîðà ïðîâåäåíèÿ òðàíñëÿöèè âèðòóàëüíûõ (ìàòåìàòè÷åñêèõ) àäðåñîâ, èñïîëüçóåìûõ ïðîãðàììîé, â ôèçè÷åñêèå àäðåñà, ñîîòâåòñòâóþùèå ðåàëüíîìó ìåñòîïîëîæåíèþ â ÎÇÓ. ×àñòü ïðîöåññîðà, ïðîâîäÿùàÿ ýòî ïðåîáðàçîâàíèå íàçûâàåòñÿ óñòðîéñòâî óïðàâëåíèÿ ïàìÿòüþ (MMU). Äëÿ óñêîðåíèÿ òðàíñëÿöèé â MMU äîáàâëåí êýø íåäàâíî èñïîëüçîâàííûõ îòîáðàæåíèé (ñîîòâåòñòâèé âèðòóàëüíûõ è ôèçè÷åñêèõ àäðåñîâ), íàçûâàåìûé Translation Lookaside Buffer (TLB).
Äëÿ äàëüíåéøåãî îïèñàíèÿ âàæíû òðè îñîáåííîñòè ïðîöåññà òðàíñëÿöèè àäðåñîâ:
- Çàäåðæêà: Ôèçè÷åñêèé àäðåñ áóäåò ïîëó÷åí îò MMU òîëüêî ñïóñòÿ íåêîòîðîå âðåìÿ, âïëîòü äî íåñêîëüêèõ òàêòîâ, ïîñëå ïîäà÷è íà âõîä MMU âèðòóàëüíîãî àäðåñà ñ ãåíåðàòîðà àäðåñîâ.
- Ýôôåêò íàëîæåíèÿ: Íåñêîëüêî âèðòóàëüíûõ àäðåñîâ ìîãóò ñîîòâåòñòâîâàòü îäíîìó ôèçè÷åñêîìó.  áîëüøèíñòâå ïðîöåññîðîâ ãàðàíòèðóåòñÿ, ÷òî âñå çàïèñè ïî ôèçè÷åñêîìó àäðåñó áóäóò ñîâåðøåíû â ïîðÿäêå, çàäàííîì ïðîãðàììîé. Äëÿ âûïîëíåíèÿ ýòîãî ñâîéñòâà òðåáóåòñÿ ïðîâåðêà, ÷òî òîëüêî îäèí ýêçåìïëÿð êîïèè äàííûõ ñ ôèçè÷åñêîãî àäðåñà íàõîäèòñÿ â äàííûé ìîìåíò â êýøå.
- Åäèíèöà îòîáðàæåíèÿ: Âèðòóàëüíîå àäðåñíîå ïðîñòðàíñòâî ðàçáèòî íà ñòðàíèöû â áëîêè ïàìÿòè ôèêñèðîâàííîãî ðàçìåðà, íà÷èíàþùèåñÿ ñ àäðåñîâ, êðàòíûõ èõ ðàçìåðó. Íàïðèìåð, 4 ÃÁ àäðåñíîãî ïðîñòðàíñòâà ìîæíî ðàçäåëèòü íà 1048576 ñòðàíèö ïî 4 ÊÁ, äëÿ êàæäîé èç êîòîðûõ âîçìîæíî íåçàâèñèìîå ñîîòâåòñòâèå ôèçè÷åñêèì ñòðàíèöàì.  ñîâðåìåííûõ ïðîöåññîðàõ ÷àñòî ïîääåðæèâàåòñÿ èñïîëüçîâàíèå îäíîâðåìåííî íåñêîëüêèõ ðàçìåðîâ ñòðàíèö, íàïðèìåð, 4 ÊÁ è 2 ÌÁ äëÿ x86-64, à â íåêîòîðûõ ñîâðåìåííûõ AMD-ïðîöåññîðàõ åùå è 1 ÃÁ.
Âàæíî òàêæå çàìåòèòü, ÷òî ïåðâûå ñèñòåìû âèðòóàëüíîé ïàìÿòè áûëè î÷åíü ìåäëåííûìè, ïîòîìó ÷òî îíè òðåáîâàëè ïðîâåðêè òàáëèöû ñòðàíèö (õðàíèìîé â îñíîâíîé ÎÇÓ) ïåðåä ëþáûì ïðîãðàììíûì îáðàùåíèåì â ïàìÿòü. Áåç èñïîëüçîâàíèÿ êýøèðîâàíèÿ äëÿ îòîáðàæåíèé òàêèå ñèñòåìû óìåíüøàþò ñêîðîñòü ðàáîòû ñ ïàìÿòüþ ïðèìåðíî â 2 ðàçà. Ïîýòîìó èñïîëüçîâàíèå TLB î÷åíü âàæíî è èíîãäà åãî äîáàâëåíèå â ïðîöåññîðû ïðåäøåñòâîâàëî ïîÿâëåíèþ îáû÷íûõ êýøåé äàííûõ è èíñòðóêöèé.
Ïî îòíîøåíèþ ê âèðòóàëüíîé àäðåñàöèè, êýøè äàííûõ è èíñòðóêöèé ìîãóò áûòü ïîäåëåíû íà 4 òèïà. Àäðåñà â êýøàõ èñïîëüçóþòñÿ äëÿ äâóõ ðàçíûõ öåëåé: èíäåêñèðîâàíèÿ è òåãèðîâàíèÿ.
- Physically indexed, physically tagged (PIPT) â ôèçè÷åñêè èíäåêñèðóåìûå è ôèçè÷åñêè òåãèðóåìûå. Òàêèå êýøè ïðîñòû è èçáåãàþò ïðîáëåì ñ íàëîæåíèåì (aliasing), íî îíè ìåäëåííû, òàê êàê ïåðåä îáðàùåíèåì â êýø òðåáóåòñÿ çàïðîñ ôèçè÷åñêîãî àäðåñà â TLB. Ýòîò çàïðîñ ìîæåò âûçâàòü ïðîìàõ â TLB è äîïîëíèòåëüíîå îáðàùåíèå â îñíîâíóþ ïàìÿòü ïåðåä òåì, êàê íàëè÷èå äàííûõ áóäåò ïðîâåðåíî â êýøå.
- Virtually indexed, virtually tagged (VIVT) â âèðòóàëüíî èíäåêñèðóåìûå è âèðòóàëüíî òåãèðóåìûå. È äëÿ òåãèðîâàíèÿ è äëÿ èíäåêñà èñïîëüçóåòñÿ âèðòóàëüíûé àäðåñ. Áëàãîäàðÿ ýòîìó ïðîâåðêè íàëè÷èÿ äàííûõ â êýøå ïðîèñõîäÿò áûñòðåå, íå òðåáóÿ îáðàùåíèÿ ê MMU. Îäíàêî, âîçíèêàåò ïðîáëåìà íàëîæåíèÿ, êîãäà íåñêîëüêî âèðòóàëüíûõ àäðåñîâ ñîîòâåòñòâóþò îäíîìó è òîìó æå ôèçè÷åñêîìó.  ýòîì ñëó÷àå äàííûå áóäóò çàêýøèðîâàíû äâàæäû, ÷òî ñèëüíî óñëîæíÿåò ïîääåðæêó êîãåðåíòíîñòè. Äðóãîé ïðîáëåìîé ÿâëÿþòñÿ ãîìîíèìû, ñèòóàöèè, êîãäà îäèí è òîò æå âèðòóàëüíûé àäðåñ (íàïðèìåð â ðàçíûõ ïðîöåññàõ) îòîáðàæàåòñÿ ðàçëè÷íûå ôèçè÷åñêèå àäðåñà. Ñòàíîâèòñÿ íåâîçìîæíûì ðàçëè÷èòü òàêèå îòîáðàæåíèÿ èñêëþ÷èòåëüíî ïî âèðòóàëüíîìó èíäåêñó. Âîçìîæíûå ðåøåíèÿ: ñáðîñ êýøà ïðè ïåðåêëþ÷åíèè ìåæäó çàäà÷àìè (context switch), òðåáîâàíèå íåïåðåñå÷åíèÿ àäðåñíûõ ïðîñòðàíñòâ ïðîöåññîâ, òåãèðîâàíèå âèðòóàëüíûõ àäðåñîâ èäåíòèôèêàòîðîì àäðåñíîãî ïðîñòðàíñòâà (address space ID, ASID) èëè èñïîëüçîâàíèå ôèçè÷åñêèõ òåãîâ. Òàêæå âîçíèêàåò ïðîáëåìà ïðè èçìåíåíèè îòîáðàæåíèÿ âèðòóàëüíûõ àäðåñîâ â ôèçè÷åñêèå, ÷òî òðåáóåò ñáðîñà êýø-ëèíèé, äëÿ êîòîðûõ èçìåíèëîñü îòîáðàæåíèå.
- Virtually indexed, physically tagged (VIPT) â âèðòóàëüíî èíäåêñèðóåìûå è ôèçè÷åñêè òåãèðóåìûå. Äëÿ èíäåêñà èñïîëüçóåòñÿ âèðòóàëüíûé àäðåñ, à äëÿ òåãà â ôèçè÷åñêèé. Ïðåèìóùåñòâîì íàä ïåðâûì òèïîì ÿâëÿåòñÿ ìåíüøàÿ çàäåðæêà, ïîñêîëüêó ìîæíî èñêàòü êýø-ëèíèþ îäíîâðåìåííî ñ òðàíñëÿöèåé àäðåñîâ â TLB, îäíàêî, ñðàâíåíèå òåãà çàäåðæèâàåòñÿ äî ïîëó÷åíèÿ ôèçè÷åñêîãî àäðåñà. Ïðåèìóùåñòâîì íàä âòîðûì òèïîì ÿâëÿåòñÿ îáíàðóæåíèå ãîìîíèìîâ (homonyms), òàê êàê òåã ñîäåðæèò ôèçè÷åñêèé àäðåñ. Äëÿ äàííîãî òèïà òðåáóåòñÿ áîëüøå áèò äëÿ òåãà, ïîñêîëüêó èíäåêñíûå áèòû èñïîëüçóþò èíîé òèï àäðåñàöèè.
- Physically indexed, virtually tagged â ôèçè÷åñêè èíäåêñèðóåìûå è âèðòóàëüíî òåãèðîâàííûå êýøè ñ÷èòàþòñÿ áåñïîëåçíûìè è ìàðãèíàëüíûìè è ïðåäñòàâëÿþò èñêëþ÷èòåëüíî àêàäåìè÷åñêèé èíòåðåñ.[3]
Ñêîðîñòü ýòèõ äåéñòâèé (çàäåðæêà çàãðóçêè èç ïàìÿòè) êðèòè÷åñêè âàæíà äëÿ ïðîèçâîäèòåëüíîñòè ïðîöåññîðîâ, è, ïîýòîìó, áîëüøèíñòâî ñîâðåìåííûõ L1-êýøåé ÿâëÿþòñÿ âèðòóàëüíî èíäåêñèðóåìûìè, ÷òî, êàê ìèíèìóì, ïîçâîëÿåò áëîêó MMU ïðîèçâîäèòü çàïðîñ â TLB îäíîâðåìåííî ñ çàïðîñîì äàííûõ èõ êýø-ïàìÿòè.
[ïðàâèòü] Âèðòóàëüíîå òåãèðîâàíèå è ìåõàíèçì vhints
Íî âèðòóàëüíàÿ èíäåêñàöèÿ íå ÿâëÿåòñÿ ëó÷øèì âûáîðîì äëÿ äðóãèõ óðîâíåé êýøà. Ñòîèìîñòü îáíàðóæåíèÿ ïåðåñå÷åíèÿ âèðòóàëüíûõ àäðåñîâ (aliasing) ðàñòåò ñ óâåëè÷åíèåì ðàçìåðà êýøà è, â ðåçóëüòàòå, áîëüøèíñòâî ðåàëèçàöèé L2 è áîëåå äàëüíèõ îò ïðîöåññîðà óðîâíåé êýøà èñïîëüçóþò èíäåêñèðîâàíèå ïî ôèçè÷åñêèì àäðåñàì
Äîñòàòî÷íî äëèòåëüíîå âðåìÿ êýøè èñïîëüçîâàëè äëÿ òåãîâ êàê ôèçè÷åñêèå òàê è âèðòóàëüíûå àäðåñà, õîòÿ âèðòóàëüíîå òåãèðîâàíèå â íàñòîÿùåå âðåìÿ âñòðå÷àåòñÿ î÷åíü ðåäêî. Åñëè TLB-çàïðîñ çàêàí÷èâàåòñÿ ðàíüøå çàïðîñà â êýø-ïàìÿòü, ôèçè÷åñêèé àäðåñ áóäåò äîñòóïåí äëÿ ñðàâíåíèÿ ñ òåãîì ê ìîìåíòó, êîãäà ýòî áóäåò íåîáõîäèìî, è, ñëåäîâàòåëüíî, âèðòóàëüíîå òåãèðîâàíèå íå ïîòðåáóåòñÿ. Áîëüøèå êýøè ÷àùå òåãèðóþòñÿ ôèçè÷åñêèìè àäðåñàìè, è òîëüêî íåáîëüøèå áûñòðîäåéñòâóþùèå êýøè èñïîëüçóþò äëÿ òåãîâ âèðòóàëüíûå àäðåñà.  ñîâðåìåííûõ ïðîöåññîðàõ îáùåãî íàçíà÷åíèÿ, âèðòóàëüíîå òåãèðîâàíèå çàìåíåíî íà ìåõàíèçì vhints, îïèñàííûé äàëåå.
[ïðàâèòü] Âèðòóàëüíîå èíäåêñèðîâàíèå è ïåðåñå÷åíèÿ âèðòóàëüíûõ àäðåñîâ
| Ýòîò ðàçäåë ñòàòüè åù¸ íå íàïèñàí.
Ñîãëàñíî çàìûñëó îäíîãî èç ó÷àñòíèêîâ Ýíöèêëîïåäèè, íà ýòîì ìåñòå äîëæåí ðàñïîëàãàòüñÿ ñïåöèàëüíûé ðàçäåë.
Âû ìîæåòå ïîìî÷ü ïðîåêòó, íàïèñàâ ýòîò ðàçäåë. |
[ïðàâèòü] Ïðîáëåìà ãîìîíèìîâ è ñèíîíèìîâ
| Ýòîò ðàçäåë ñòàòüè åù¸ íå íàïèñàí.
Ñîãëàñíî çàìûñëó îäíîãî èç ó÷àñòíèêîâ Ýíöèêëîïåäèè, íà ýòîì ìåñòå äîëæåí ðàñïîëàãàòüñÿ ñïåöèàëüíûé ðàçäåë.
Âû ìîæåòå ïîìî÷ü ïðîåêòó, íàïèñàâ ýòîò ðàçäåë. |
[ïðàâèòü] Ðàñöâå÷èâàíèå ñòðàíèö
| Ýòîò ðàçäåë ñòàòüè åù¸ íå íàïèñàí.
Ñîãëàñíî çàìûñëó îäíîãî èç ó÷àñòíèêîâ Ýíöèêëîïåäèè, íà ýòîì ìåñòå äîëæåí ðàñïîëàãàòüñÿ ñïåöèàëüíûé ðàçäåë.
Âû ìîæåòå ïîìî÷ü ïðîåêòó, íàïèñàâ ýòîò ðàçäåë. |
[ïðàâèòü] Èåðàðõèÿ êýøåé â ñîâðåìåííûõ ìèêðîïðîöåññîðàõ
Áîëüøèíñòâî ñîâðåìåííûõ ïðîöåññîðîâ ñîäåðæàò â ñåáå íåñêîëüêî âçàèìîäåéñòâóþùèõ êýøåé.
[ïðàâèòü] Ñïåöèàëèçèðîâàííûå êýøè
Ñóïåðñêàëÿðíûå ÖÏÓ îñóùåñòâëÿþò äîñòóï ê ïàìÿòè èç íåñêîëüêèõ ýòàïîâ êîíâåéåðà: ÷òåíèå èíñòðóêöèè (instruction fetch), òðàíñëÿöèÿ âèðòóàëüíûõ àäðåñîâ â ôèçè÷åñêèå, ÷òåíèå äàííûõ (data fetch). Î÷åâèäíûì ðåøåíèåì ÿâëÿåòñÿ èñïîëüçîâàíèå ðàçëè÷íûõ ôèçè÷åñêèõ êýøåé äëÿ êàæäîãî èç ýòèõ ñëó÷àåâ, ÷òîáû íå áûëî áîðüáû çà äîñòóï ê îäíîìó èç ôèçè÷åñêèõ ðåñóðñîâ ñ ðàçíûõ ñòàäèé êîíâåéåðà. Òàêèì îáðàçîì, íàëè÷èå êîíâåéåðà îáû÷íî ïðèâîäèò ê íàëè÷èþ ïî êðàéíåé ìåðå òð¸õ ðàçäåëüíûõ êýøåé: êýø èíñòðóêöèé, êýø òðàíñëÿöèé TLB è êýø äàííûõ, êàæäûé èç êîòîðûõ ñïåöèàëèçèðîâàí íà ñâîåé çàäà÷å.
Êîíâåéåðíûå ïðîöåññîðû èñïîëüçóþùèå ðàçäåëüíûå êýøè äëÿ äàííûõ è äëÿ èíñòðóêöèé (òàêèå ïðîöåññîðû ñåé÷àñ ïîâñåìåñòíû) íàçûâàþòñÿ èìåþùèìè Ãàðâàðäñêóþ àðõèòåêòóðó. Èçíà÷àëüíî ñåé òåðìèí ïðèìåíÿëñÿ äëÿ êîìïüþòåðîâ, ó êîòîðûõ èíñòðóêöèè è äàííûå ðàçäåëåíû ïîëíîñòüþ è õðàíÿòñÿ â ðàçëè÷íûõ óñòðîéñòâàõ ïàìÿòè. Îäíàêî, òàêîå ïîëíîå ðàçäåëåíèå íå îêàçàëîñü ïîïóëÿðíûì, è áîëüøèíñòâî ñîâðåìåííûõ êîìïüþòåðîâ èìåþò îäíî óñòðîéñòâî îñíîâíîé ïàìÿòè è ïîýòîìó ìîãóò ñ÷èòàòüñÿ ìàøèíàìè ñ àðõèòåêòóðîé ôîí Íåéìàíà
[ïðàâèòü] Ìíîãîóðîâíåâûå êýøè
Îäíîé èç ïðîáëåì ÿâëÿåòñÿ ôóíäàìåíòàëüíàÿ ïðîáëåìà áàëàíñà ìåæäó çàäåðæêàìè êýøà è èíòåíñèâíîñòüþ ïîïàäàíèé. Áîëüøèå êýøè èìåþò áîëåå âûñîêèé ïðîöåíò ïîïàäàíèé íî, âìåñòå ñ òåì, è áîëüøóþ çàäåðæêó. ×òîáû îñëàáèòü ïðîòèâîðå÷èå ìåæäó ýòèìè äâóìÿ ïàðàìåòðàìè, áîëüøèíñòâî êîìïüþòåðîâ èñïîëüçóåò íåñêîëüêî óðîâíåé êýøà, êîãäà ïîñëå ìàëåíüêèõ è áûñòðûõ êýøåé íàõîäÿòñÿ áîëåå ìåäëåííûå áîëüøèå êýøè (â íàñòîÿùèé ìîìåíò â ñóììàðíî äî 3 óðîâíåé â èåðàðõèè êýøåé).
 åäèíè÷íûõ ñëó÷àÿõ ðåàëèçóþò 4 óðîâíÿ êåø-ïàìÿòè.[4][5]
Ìíîãîóðîâíåâûå êýøè îáû÷íî ðàáîòàþò â ïîñëåäîâàòåëüíîñòè îò ìåíüøèõ êýøåé ê áîëüøèì. Ñíà÷àëà ïðîèñõîäèò ïðîâåðêà íàèìåíüøåãî è íàèáûñòðåéøåãî êýøà ïåðâîãî óðîâíÿ (L1), â ñëó÷àå ïîïàäàíèÿ ïðîöåññîð ïðîäîëæàåò ðàáîòó íà âûñîêîé ñêîðîñòè. Åñëè ìåíüøèé êýø äàë ïðîìàõ, ïðîâåðÿåòñÿ ñëåäóþùèé, ÷óòü áîëüøèé è áîëåå ìåäëåííûé êýø âòîðîãî óðîâíÿ (L2), è òàê äàëåå, ïîêà íå áóäåò çàïðîñà ê îñíîâíîìó ÎÇÓ.
Ïî ìåðå òîãî, êàê ðàçíèöà çàäåðæåê ìåæäó ÎÇÓ è áûñòðåéøèì êýøåì óâåëè÷èâàåòñÿ, â íåêîòîðûõ ïðîöåññîðàõ óâåëè÷èâàþò êîëè÷åñòâî óðîâíåé êýøà (â íåêîòîðûõ â äî 3õ óðîâíåé íà êðèñòàëëå). Ê ïðèìåðó, Alpha 21164 â 1995 ãîäó èìåëà íàêðèñòàëëüíûé êýø 3ãî óðîâíÿ â 96 ÊÁ; IBM POWER4 â 2001 ãîäó èìåë äî ÷åòûðåõ êýøåé L3 ïî 32 ÌÁ[6] íà îòäåëüíûõ êðèñòàëëàõ, èñïîëüçóåìûõ ñîâìåñòíî íåñêîëüêèìè ÿäðàìè; Itanium 2 â 2003 ãîäó èìåë 6 ÌÁ êýø L3 íà êðèñòàëëå; Xeon MP ïîä êîäîì «Tulsa» â 2006 ãîäó â 16 ÌÁ êýøà L3 íà êðèñòàëëå, îáùèé íà 2 ÿäðà; Phenom II â 2008 ãîäó â äî 6 ÌÁ óíèâåðñàëüíîãî L3 êýøà; Intel Core i7 â 2008 ãîäó â 8 ÌÁ íàêðèñòàëëüíîãî êýøà L3, ÿâëÿþùèìñÿ èíêëþçèâíûì è ðàçäåëÿåìûì ìåæäó âñåìè ÿäðàìè. Ïîëüçà îò êýøà L3 çàâèñèò îò õàðàêòåðà îáðàùåíèé ïðîãðàììû â ïàìÿòü.
Íàêîíåö, ñ äðóãîé ñòîðîíû èåðàðõèè ïàìÿòè íàõîäèòñÿ ðåãèñòðîâûé ôàéë ñàìîãî ìèêðîïðîöåññîðà, êîòîðûé ìîæíî ðàññìàòðèâàòü êàê íåáîëüøîé è ñàìûé áûñòðûé êýø â ñèñòåìå ñî ñïåöèàëüíûìè ñâîéñòâàìè (íàïðèìåð, ñòàòè÷åñêîå ïëàíèðîâàíèå êîìïèëÿòîðîì ïðè ðàñïðåäåëåíèè ðåãèñòðîâ, êîãäà îí ðàñïîëàãàåò äàííûå èç ÎÇÓ íà ðåãèñòð). Ïîäðîáíåå ñì loop nest optimization. Ðåãèñòðîâûé ôàéëû òàêæå ìîãóò èìåòü èåðàðõèþ: Cray-1 (â 1976 ãîäó) èìåë 8 àäðåñíûõ «A»-ðåãèñòðîâ è 8 ñêàëÿðíûõ «S»-ðåãèñòðîâ îáùåãî íàçíà÷åíèÿ. Òàêæå ìàøèíà ñîäåðæàëà íàáîð èç 64 àäðåñíûõ «B» è 64 ñêàëÿðíûõ «T» ðåãèñòðîâ, îáðàùåíèå ê êîòîðûì áûëî äîëüøå, íî âñå æå çíà÷èòåëüíî áûñòðåå îñíîâíîé ÎÇÓ. Ýòè ðåãèñòðû áûëè ââåäåíû ïî ïðè÷èíå îòñóòñòâèÿ â ìàøèíå êýøà äàííûõ (õîòÿ êýø êîìàíä â ìàøèíå èìåëñÿ)
-
Çàòðåáîâàííûå äàííûå ñ÷èòûâàþòñÿ èç êýøà ïåðâîãî (àíãë. L1) óðîâíÿ. -
Çàòðåáîâàííûå äàííûå ñ÷èòûâàþòñÿ èç êýøà âòîðîãî (àíãë. L2) óðîâíÿ.
[ïðàâèòü] Ýêñêëþçèâíîñòü (èñêëþ÷èòåëüíîñòü) è èíêëþçèâíîñòü
Äëÿ ìíîãîóðîâíåâûõ êåøåé òðåáóåòñÿ äåëàòü íîâûå àðõèòåêòóðíûå ðåøåíèÿ.
Íàïðèìåð, â íåêîòîðîì ïðîöåññîðå ìîãóò ïîòðåáîâàòü, ÷òîáû âñå äàííûå, õðàíÿùèåñÿ â êýøå L1, õðàíèëèñü òàêæå è â êýøå L2. Òàêèå ïàðû êýøåé íàçûâàþò ñòðîãî èíêëþçèâíûìè (àíãë. inclusive). Äðóãèå ïðîöåññîðû (íàïðèìåð, AMD Athlon) ìîãóò íå èìåòü ïîäîáíîãî òðåáîâàíèÿ, òîãäà êýøè íàçûâàþòñÿ ýêñêëþçèâíûìè (èñêëþ÷èòåëüíûìè) â äàííûå ìîãóò áûòü ëèáî â L1, ëèáî â L2 êýøå, íî íèêîãäà íå ìîãóò áûòü îäíîâðåìåííî â îáîèõ.
Äî ñèõ ïîð äðóãèì ïðîöåññîðàì (òàêèå êàê Pentium II, Pentium III, è Pentium 4) íå òðåáóþòñÿ, ÷òîáû äàííûå â êýøå ïåðâîãî óðîâíÿ òàêæå ðàçìåùàëèñü â êýøå âòîðîãî óðîâíÿ, òåì íå ìåíåå, îíè ïðîäîëæàþò òàê äåëàòü. Íåò íèêàêîãî óíèâåðñàëüíîãî îáùåïðèíÿòîãî èìåíè äëÿ ýòîé ïðîìåæóòî÷íîé ïîëèòèêè, õîòÿ ÷àñòî èñïîëüçóåòñÿ òåðìèí ãëàâíûì îáðàçîì èíêëþçèâíî (àíãë. mainly inclusive).
Ïðåèìóùåñòâî èñêëþ÷èòåëüíûõ êýøåé â òîì, ÷òî îíè õðàíÿò áîëüøå äàííûõ. Ýòî ïðåèìóùåñòâî áîëüøå, êîãäà èñêëþ÷èòåëüíûé êýø L1 ñîïîñòàâèì ïî ðàçìåðó ñ êýøýì L2, è ìåíüøå, åñëè êýø L2 - âî ìíîãî ðàç áîëüøå, ÷åì êýø L1. Êîãäà L1 ïðîïóñêàåò è L2 ïîëó÷àåò äîñòóï â ñëó÷àå ïîïàäàíèÿ, ñòðîêà êýøà ïîïàäàíèÿ â L2 îáìåíèâàåòñÿ ñî ñòðîêîé â L1. Ýòîò îáìåí ðàáîòàþò íåíàìíîãî áîëüøå, ÷åì òîëüêî êîïèðîâàíèå ñòðîêó èç L2 â L1, êîòîðîå äåëàåò, èíêëþçèâíûé êýø.
[ïðàâèòü] Êýø æåðòâ
«Êýø æåðòâ» (àíãë. Victim cache èëè Victim buffer[7]) â ýòî íåáîëüøîé ñïåöèàëèçèðîâàííûé êýø, õðàíÿùèé òå êýø-ëèíèè, êîòîðûå áûëè íåäàâíî âûòåñíåíû èç îñíîâíîãî êýøà ìèêðîïðîöåññîðà ïðè èõ çàìåùåíèè. Äàííûé êýø ðàñïîëàãàåòñÿ ìåæäó îñíîâíûì êýøåì è åãî àíãë. refill path. Îáû÷íî êýø æåðòâ ÿâëÿåòñÿ ïîëíîñòüþ àññîöèàòèâíûì è ñëóæèò äëÿ óìåíüøåíèÿ êîëè÷åñòâà êîíôëèêòíûõ ïðîìàõîâ (conflict miss). Ìíîãèå ÷àñòî èñïîëüçóåìûå ïðîãðàììû íå òðåáóþò ïîëíîãî àññîöèàòèâíîãî îòîáðàæåíèÿ äëÿ âñåõ ïîïûòîê äîñòóïà ê ïàìÿòè. Ïî ñòàòèñòèêå, òîëüêî íåáîëüøàÿ äîëÿ îáðàùåíèé ê ïàìÿòè ïîòðåáóåò âûñîêîé ñòåïåíè àññîöèàòèâíîñòè. Èìåííî äëÿ òàêèõ îáðàùåíèé ñëóæèò êýø æåðòâ, ïðåäîñòàâëÿþùèé âûñîêóþ àññîöèàòèâíîñòü äëÿ ïîäîáíûõ ðåäêèõ çàïðîñîâ. Áûë ïðåäëîæåí Norman Jouppi (DEC) â 1990.[8] Ðàçìåð òàêîãî êåøà ìîæåò ñîñòàâëÿòü îò 4 äî 16 êåø-ëèíèé.[9]
[ïðàâèòü] Êýø òðàññ
Îäíèì èç íàèáîëåå ýêñòðåìàëüíûõ ñëó÷àåâ ñïåöèàëèçàöèè êýøåé ìîæíî ñ÷èòàòü êýø òðàññ (àíãë. trace cache), èñïîëüçóåìûé â ïðîöåññîðàõ Intel Pentium 4. Êýø òðàññ â ýòî ìåõàíèçì äëÿ óâåëè÷åíèÿ ïðîïóñêíîé ñïîñîáíîñòè çàãðóçêè èíñòðóêöèé è äëÿ óìåíüøåíèÿ òåïëîâûäåëåíèÿ (â ñëó÷àå Pentium 4) çà ñ÷åò õðàíåíèÿ äåêîäèðîâàííûõ òðàññ èíñòðóêöèé. Òàêèì îáðàçîì ýòîò êýø èñêëþ÷àë ðàáîòó äåêîäåðà ïðè ïîâòîðíîì èñïîëíåíèè íåäàâíî âûïîëíÿâøåãîñÿ êîäà.
Îäíîé èç ðàííèõ ïóáëèêàöèåé î êýøå òðàññ áûëà ñòàòüÿ êîëëåêòèâà àâòîðîâ ( Eric Rotenberg, Steve Bennett è Jim Smith), âûøåäøàÿ â 1996 ãîäó ïîä íàçâàíèåì «Trace Cache: a Low Latency Approach to High Bandwidth Instruction Fetching.» (Êýø òðàññ: íèçêîëàòåíòíûé ïîäõîä äëÿ îáåñïå÷åíèÿ âûñîêîé ïðîïóñêíîé ñïîñîáíîñòè çàãðóçêè èíñòðóêöèé).
Êýø òðàññ ñîõðàíÿåò äåêîäèðîâàííûå èíñòðóêöèè ëèáî ïîñëå èõ äåêîäèðîâàíèÿ ëèáî ïîñëå îêîí÷àíèÿ èõ èñïîëíåíèÿ. Îáîáùàÿ, èíñòðóêöèè äîáàâëÿþòñÿ â êýø òðàññ â ãðóïïàõ, ïðåäñòàâëÿþùèõ ñîáîé ëèáî áàçîâûå áëîêè ëèáî äèíàìè÷åñêèå òðàññû. Äèíàìè÷åñêàÿ òðàññà (ïóòü èñïîëíåíèÿ) ñîñòîèò òîëüêî èç èíñòðóêöèé, ðåçóëüòàòû êîòîðûõ áûëè çíà÷èìû (èñïîëüçîâàëèñü âïîñëåäñòâèè) è óäàëÿåò èíñòðóêöèè, êîòîðûå íàõîäÿòñÿ â íå èñïîëíÿþùèõñÿ âåòâÿõ, êðîìå òîãî äèíàìè÷åñêàÿ òðàññà ìîæåò áûòü îáúåäèíåíèåì íåñêîëüêèõ áàçîâûõ áëîêîâ. Òàêàÿ îñîáåííîñòü ïîçâîëÿåò óñòðîéñòâó ïîäãðóçêè èíñòðóêöèé â ïðîöåññîðå çàãðóæàòü ñðàçó íåñêîëüêî áàçîâûõ áëîêîâ áåç íåîáõîäèìîñòè çàáîòèòüñÿ î íàëè÷èè âåòâëåíèé â ïîòîêå èñïîëíåíèÿ
Ëèíèè òðàññ õðàíÿòñÿ â êýøå òðàññ ïî àäðåñàì, ñîîòâåòñòâóþùèì ñ÷åò÷èêó èíñòðóêöèé ïåðâîé ìàøèííîé êîìàíäû èç òðàññû, ê êîòîðûì äîáàâëåí íàáîð ïðèçíàêîâ ïðåäñêàçàíèÿ âåòâëåíèé. Òàêàÿ àäðåñàöèÿ ïîçâîëÿåò õðàíèòü ðàçëè÷íûå òðàññû èñïîëíåíèÿ, íà÷èíàþùèåñÿ ñ îäíîãî àäðåñà, íî ïðåäñòàâëÿþùèå ðàçëè÷íûå ñèòóàöèè ïî ðåçóëüòàòó ïðåäñêàçàíèÿ âåòâëåíèé. Íà ñòàäèè ïîäãðóçêè èíñòðóêöèè (instruction fetch) êîíâåéåðà èíñòðóêöèé äëÿ ïðîâåðêè ïîïàäàíèÿ â êýø òðàññ èñïîëüçóåòñÿ êàê òåêóùèé ñ÷åò÷èê èíñòðóêöèé (program counter), òàê è ñîñòîÿíèå ïðåäñêàçàòåëÿ âåòâëåíèé. Åñëè ïîïàäàíèå ñâåðøèëîñü, ëèíèÿ òðàññû íåïîñðåäñòâåííî ïîäàåòñÿ íà êîíâåéåð áåç íåîáõîäèìîñòè îïðàøèâàòü îáû÷íûé êýø (L2) èëè îñíîâíîå ÎÇÓ. Êýø òðàññ ïîäàåò ìàøèííûå êîìàíäû íà âõîä êîíâåéåðà, ïîêà íå êîí÷èòñÿ ëèíèÿ òðàññû, ëèáî ïîêà íå ïðîèçîéäåò îøèáêà ïðåäñêàçàíèÿ â êîíâåéåðå.  ñëó÷àå ïðîìàõà êýø òðàññ íà÷èíàåò ñòðîèòü ñëåäóþùóþ ëèíèþ òðàññû, çàãðóæàÿ ìàøèííûé êîä èç êýøà èëè èç ïàìÿòè.
Ïîõîæèå êýøè òðàññ èñïîëüçîâàëèñü â Pentium 4 äëÿ õðàíåíèÿ äåêîäèðîâàííûõ ìèêðîîïåðàöèé è ìèêðîêîäà, ðåàëèçóþùåãî ñëîæíûå x86-èíñòðóêöèè. Smith, Rotenberg and Bennettâ™s paper Ñì ïîëíûé òåêñò ðàáîòû â Citeseer.
[ïðàâèòü] Ðåàëèçàöèè
[ïðàâèòü] Èñòîðèÿ
 ðàííèå ãîäû ìèêðîïðîöåññîðíûõ òåõíîëîãèé, äîñòóï â ïàìÿòü áûë ëèøü íåìíîãî ìåäëåííåå äîñòóïà ê ïðîöåññîðíûì ðåãèñòðàì. Íî ñ 1980õ[10] ðàçðûâ â ïðîèçâîäèòåëüíîñòè ìåæäó ïðîöåññîðàìè è ïàìÿòüþ ñòàë íàðàñòàòü. Ìèêðîïðîöåññîðû ñîâåðøåíñòâîâàëèñü áûñòðåå ÷åì ïàìÿòü, îñîáåííî â ïëàíå ÷àñòîòû ôóíêöèîíèðîâàíèÿ, òàêèì îáðàçîì, ïàìÿòü ñòàíîâèëàñü óçêèì ìåñòîì ïðè äîñòèæåíèè ïîëíîé ïðîèçâîäèòåëüíîñòè îò ñèñòåìû. Õîòÿ áûëî òåõíè÷åñêè âîçìîæíûì èìåòü îñíîâíóþ ïàìÿòü ñòîëü æå áûñòðîé êàê è ÖÏÓ, áûë âûáðàí áîëåå ýêîíîìè÷íûé ïóòü: èñïîëüçîâàòü èçáûòî÷íîå êîëè÷åñòâî íèçêîñêîðîñòíîé ïàìÿòè, íî ââåñòè â ñèñòåìó íåáîëüøóþ, íî áûñòðóþ êýø ïàìÿòü, äëÿ ñìÿã÷åíèÿ ðàçðûâà â ïðîèçâîäèòåëüíîñòè.  èòîãå ïîëó÷èëè íà ïîðÿäîê áîëüøèå îáúåìû ïàìÿòè, ïðèìåðíî çà òó æå öåíó è ñ íåáîëüøèìè ïîòåðÿìè îáùåé ïðîèçâîäèòåëüíîñòè.
×òåíèå äàííûõ èç êýøà äëÿ ñîâðåìåííûõ ïðîöåññîðîâ îáû÷íî çàíèìàåò áîëåå îäíîãî òàêòà. Âðåìÿ èñïîëíåíèÿ ïðîãðàìì ÿâëÿåòñÿ ÷óâñòâèòåëüíûì ê çàäåðæêàì ÷òåíèÿ èç êýøà äàííûõ ïåðâîãî óðîâíÿ. Ìíîãî óñèëèé ðàçðàáîò÷èêîâ, à òàêæå ìîùíîñòè è ïëîùàäè êðèñòàëëà ïðè ñîçäàíèè ïðîöåññîðà îòâîäèòñÿ äëÿ óñêîðåíèÿ ðàáîòû êåøåé.
Ïðîñòåéøèì êýøåì ÿâëÿåòñÿ âèðòóàëüíî èíäåêñèðóåìûé êýø ïðÿìîãî îòîáðàæåíèÿ. Âèðòóàëüíûé àäðåñ ïîäñ÷èòûâàåòñÿ ïðè ïîìîùè ñóììàòîðà, ñîîòâåòñòâóþùàÿ ÷àñòü àäðåñà âûäåëÿåòñÿ è èñïîëüçóåòñÿ äëÿ èíäåêñèðîâàíèÿ SRAM, êîòîðûé âåðíåò çàãðóæàåìûå äàííûå. Äàííûå ìîãóò áûòü âûðîâíåíû ïî áàéòîâûì ãðàíèöàì â áàéòîâîì ñäâèãàòåëå è çàòåì ïåðåäàíû ñëåäóþùåé îïåðàöèè. Ïðè òàêîì ÷òåíèè íå òðåáóåòñÿ êàêàÿ-ëèáî ïðîâåðêà òåãîâ, ôàêòè÷åñêè, íåò äàæå íåîáõîäèìîñòè ñ÷èòûâàòü òåã. Íà áîëåå ïîçäíèõ ñòàäèÿõ êîíâåéåðà, ïåðåä îêîí÷àíèåì èñïîëíåíèÿ èíñòðóêöèè ÷òåíèÿ ïîòðåáóåòñÿ ÷òåíèå òåãà è åãî ñðàâíåíèå ñ âèðòóàëüíûì àäðåñîì, ÷òîáû óäîñòîâåðèòüñÿ, ÷òî ïðîèçîøëî ïîïàäàíèå â êýø. Åñëè æå áûë ïðîìàõ, ïîòðåáóåòñÿ ÷òåíèå èç ïàìÿòè ëèáî áîëåå ìåäëåííîãî êýøà ñ äàëüíåéøèì îáíîâëåíèåì ðàññìàòðèâàåìîãî êýøà è ïåðåçàïóñêîì êîíâåéåðà.
Àññîöèàòèâíûé êýø áîëåå ñëîæåí, ïîòîìó ÷òî íåêîòîðûé âàðèàíò òåãà íóæíî ñ÷èòàòü äëÿ îïðåäåëåíèÿ, êàêóþ ÷àñòü êýøà âûáðàòü. Êýø N-way set-associative ïåðâîãî óðîâíÿ îáû÷íî ñ÷èòûâàåò îäíîâðåìåííî âñå N âîçìîæíûõ òåãîâ è N äàííûõ ïàðàëëåëüíî, çàòåì ïðîâîäèò ñðàâíåíèå òåãîâ ñ àäðåñîì è âûáîð äàííûõ, àññîöèèðîâàííûõ ñ ñîâïàâøèì òåãîì. Êýøè 2ãî óðîâíÿ â öåëÿõ ýêîíîìèè ýíåðãîâûäåëåíèÿ èíîãäà âûïîëíÿþò ñíà÷àëà ÷òåíèå òåãîâ, è òîëüêî çàòåì ÷òåíèå îäíîãî ýëåìåíòà äàííûõ èç SRAM äàííûõ.
Äèàãðàììà ñïðàâà äîëæíà ïîêàçàòü êàê ïðîèñõîäèò èñïîëüçîâàíèå ðàçëè÷íûõ ÷àñòåé àäðåñà. Áèò 31 àäðåñà ÿâëÿåòñÿ íàèáîëåå çíà÷èìûì áèòîì (ñòàðøèì), áèò 0 â íàèìåíåå çíà÷àùèì áèòîì (ìëàäøèì). Íà äèàãðàììå ïîêàçàíû äâå SRAM, èíäåêñàöèÿ è ìóëüòèïëåêñèðîâàíèå äëÿ 4 ÊÁ, 2-way set-associative, âèðòóàëüíî èíäåêñèðîâàííîãî è âèðòóàëüíî òåãèðîâàííîãî êýøà ñ 64 áàéòíûìè áëîêàìè, 32áèòíîé øèðèíîé ÷òåíèÿ è 32áèòíûì âèðòóàëüíûì àäðåñîì.
Ïîñêîëüêó êýø èìååò ðàçìåð 4 ÊÁ è ëèíèè ðàçìåðîì 64 áàéòà, â íåì õðàíèòñÿ 64 ëèíèè, è ìû ìîæåì ñ÷èòàòü çà äâà ðàçà èç òýãà SRAM êîòîðûé ñîäåðæèò 32 ñòîëáöà, êàæäûé èç êîòîðûõ ñîäåðæèò ïàðó 21-áèòíûõ òåãîâ. Õîòÿ ìîæåò áûòü èñïîëüçîâàíà ëþáàÿ ôóíêöèÿ âèðòóàëüíîé àäðåñàöèè áèòîâ 31 ïî 6, ÷òîáû èíäåêñèðîâàòü òýã è äàííûå SRAM, ïðîùå âñåãî âîñïîëüçîâàòüñÿ ìëàäøèìè ðàçðÿäàìè. Òàê æå, ïîòîìó ÷òî îáú¸ì êýøà ñîñòàâëÿåò 4 êÁ è èìååò ÷åòûð¸õáàéòíûé ïóòü äëÿ ÷òåíèÿ, è ÷òåíèå ïðîèçâîäèòñÿ ïî äâóì ïóòÿìè äëÿ êàæäîãî äîñòóïà, äàííûå SRAM ñîñòàâëÿþò 512 ðÿäîâ øèðèíîé 8 áàéò.
Áîëåå ñîâðåìåííûé êýø, âîçìîæíî, áûë áû 16 êèëîáàéòíûì, ÷åòûð¸õïóòíûì, íàáîð-àññîöèàòèâíûì, âèðòóàëüíî èíäåêñèðóåìûì, âèðòóàëüíî ïîïàäàåìûì è ôèçè÷åñêè ïîìå÷àåìûì (òåãîì), ñ 32-áèòíûìè ñòðîêàìè, 32-áèòíîé øèðèíîé øèíû ÷òåíèÿ è 36-áèòíûì ôèçè÷åñêèì àäðåñîâàíèåì. Ðåêóððåíòíîå ñîîòíîøåíèå ïóòè ÷òåíèÿ äëÿ òàêîãî êýøà âûãëÿäèò î÷åíü ñõîæå ñ ðàññìîòðåííûìè âûøå. Âìåñòî òýãîâ, ÷èòàþòñÿ âèðòóàëüíûå ïîïàäàíèÿ? (àíãë. vhits), è ñíîâà ïðîèçâîäèòñÿ ñîîòâåòñòâèå ïîäìíîæåñòâà âèðòóàëüíîìó àäðåñó. Ïîçæå, â êîíâåéðå, âèðòóàëüíûé àäðåñ ïåðåâîäèòñÿ â ôèçè÷åñêèé àäðåñ TLB, è ïðîèçâîäèòñÿ ÷òåíèå ôèçè÷åñêîãî òýãà (òîëüêî îäíî, òàê êàê âèðòóàëüíîå ïîïàäàíèå ïîñòàâëÿåò ïóòü äëÿ ÷òåíèÿ êýøà).  êîíöå, ôèçè÷åñêèé àäðåñ ñðàâíèâàåòñÿ ñ ôèçè÷åñêèì òýãîì, ÷òîáû îïðåäåëèòü, ïðîèçîøëî ëè ïîïàäàíèå.
Íåêîòîðûå ïðîöåññîðû SPARC èìåëè óñêîðåííûå íà íåñêîëüêî çàäåðæåê çàòâîðà (àíãë. gate delay) L1 êýøè çà ñ÷åò èñïîëüçîâàíèÿ SRAM äåêîäåðîâ âìåñòî ñóììàòîðà âèðòóàëüíûõ àäðåñîâ. Ïîäðîáíåå ñì en:Sum addressed decoder.
[ïðàâèòü] Â Õ86
Êîãäà x86 ìèêðîïðîöåññîðû äîñòèãëè ÷àñòîò â 20 è áîëåå ìåãàãåðö (íà÷èíàÿ ñ Intel 80386), äëÿ óâåëè÷åíèÿ ïðîèçâîäèòåëüíîñòè â íèõ áûëî äîáàâëåíî íåáîëüøîå êîëè÷åñòâî áûñòðîé êýø ïàìÿòè. Ýòî áûëî íåîáõîäèìî èç-çà òîãî, ÷òî èñïîëüçóåìàÿ êàê ñèñòåìíîå ÎÇÓ DRAM, èìåëà çíà÷èòåëüíûå çàäåðæêè (äî 120 íñ), è òðåáîâàëà òàêòû äëÿ îáíîâëåíèÿ. Êýø áûë ïîñòðîåí íà áàçå áîëåå äîðîãîé, íî çíà÷èòåëüíî áîëåå áûñòðîé SRAM, êîòîðàÿ â òå âðåìåíà èìåëà çàäåðæêè îêîëî 10 íñ. Ðàííèå êýøè áûëè âíåøíèìè ïî îòíîøåíèþ ê ïðîöåññîðó è ÷àñòî ðàñïîëàãàëèñü íà ìàòåðèíñêîé ïëàòå êàê 8 èëè 9 ìèêðîñõåì â êîðïóñàõ DIP, ðàñïîëîæåííûå â ñîêåòàõ äëÿ âîçìîæíîñòè óâåëè÷åíèÿ èëè óìåíüøåíèÿ ðàçìåðà êýøà. Íåêîòîðûå âåðñèè ïðîöåññîðà I386 ïîääåðæèâàëè îò 16 äî 64 ÊÁ âíåøíåãî êýøà[11].
Ñ âûõîäîì ïðîöåññîðà Intel 80486 8 ÊÁ êýøà áûëî èíòåãðèðîâàíî íåïîñðåäñòâåííî íà êðèñòàëë ìèêðîïðîöåññîðà. Ýòîò êýø áûë íàçâàí L1 (ïåðâîãî óðîâíÿ, àíãë. level 1), ÷òîáû îòëè÷àòü åãî îò áîëåå ìåäëåííîãî êýøà íà ìàòåðèíñêîé ïëàòå, íàçâàííîãî L2 (âòîðîãî óðîâíÿ, àíãë. level 2). Ïîñëåäíèå áûëè çíà÷èòåëüíî áîëüøå, âïëîòü äî 256 ÊÁ.
 äàëüíåéøåì ñëó÷àè îòäåëåíèÿ êýøà ïðîèçâîäèëèñü ëèøü èñõîäÿ èç ñîîáðàæåíèé ìàðêåòèíãîâîé ïîëèòèêè, íàïðèìåð â ìèêðîïðîöåññîðå Celeron ïîñòðîåííîì íà ÿäðå Pentium II.
 ìèêðîïðîöåññîðå Pentium èñïîëüçóåòñÿ ðàçäåëüíûé êýø, êîìàíä è äàííûõ[12]. Áóôåð òðàíñëÿöèè àäðåñîâ (TLB) ïðåîáðàçóåò àäðåñ â ÎÇÓ â ñîîòâåòñòâóþùèé àäðåñ â êýøå. Êýø äàííûõ Pentium èñïîëüçóåò ìåòîä îáðàòíîé çàïèñè (àíãë. write-back) êîòîðûé ïîçâîëÿåò ìîäèôèöèðîâàòü äàííûå â êýøå áåç äîïîëíèòåëüíîãî îáðàùåíèÿ ê îïåðàòèâíîé ïàìÿòè (äàííûå çàïèñûâàþòñÿ â ÎÇÓ òîëüêî ïðè óäàëåíèè èç êýøà) è ïðîòîêîë MESI (Modified, Exclusive, Shared, Invalid), êîòîðûé îáåñïå÷èâàåò êîãåðåíòíîñòü äàííûõ â êýøàõ ïðîöåññîðîâ è â ÎÇÓ ïðè ðàáîòå â ìóëüòèïðîöåññîðíîé ñèñòåìå..
Êàæäûé èç ðàçäåëüíûõ êýøåé, äàííûõ è êîìàíä, ìèêðîïðîöåññîðà Pentium MMX èìååò îáú¸ìîì 16 êÁ è ñîäåðæèò äâà ïîðòà, ïî îäíîìó äëÿ êàæäîãî èñïîëíèòåëüíîãî êîíâåéåðà. Êýø äàííûõ èìååò áóôåð òðàíñëÿöèè àäðåñîâ (TLB).
Ñëåäóþùèé âàðèàíò ðåàëèçàöèè êýøåé â x86 ïîÿâèëñÿ â Pentium Pro, â êîòîðîì êýø âòîðîãî óðîâíÿ (îáúåäèí¸ííûé äëÿ äàííûõ è êîìàíä, ðàçìåðîì 8 êÁ) ðàçìåù¸í â îäíîì êîðïóñå ñ ïðîöåññîðîì è êýøåì ïåðâîãî óðîâíÿ, ðàçìåðîì 8 êÁ, ðàçäåëüíûì äëÿ äàííûõ è êîìàíä è ïîäíÿë åãî ÷àñòîòó äî ÷àñòîòû ÿäðà. Ïîçæå êýø âòîðîãî óðîâíÿ ñòàë ðàçìåùàòüñÿ íà òîì æå êðèñòàëëå, ÷òî è ïðîöåññîð. Äâîéíàÿ íåçàâèñèìàÿ øèíà (TLB)àíãë. DIB), íîâàÿ àðõèòåêòóðà êýø-ïàìÿòè, èñïîëüçóåò ðàçíûå øèíû äëÿ ñîåäèíåíèÿ ïðîöåññîðíîãî ÿäðà ñ îñíîâíîé îïåðàòèâíîé ïàìÿòüþ. Êýø ïåðâîãî óðîâíÿ äâóõïîðòîâûé, íåáëîêèðóþùèé, ïîääåðæèâàåò îäíó îäíó îïåðàöèþ çàãðóçêè è îäíó îïåðàöèþ çàïèñè çà òàêò. Ðàáîòàòåò íà òàêòîâîé ÷àñòîòå ïðîöåññîðà. Çà òàêò ïåðåäà¸òñÿ 64 áèòà.
 ìèêðîïðîöåññîðå Pentium II êýø ïåðâîãî óðîâíÿ óâåëè÷åí â 16 êáàéò äëÿ äàííûõ è 16 êáàéò äëÿ êîìàíä. Äëÿ êýøà âòîðîãî óðîâíÿ èñïîëüçóåòñÿ BSRAM, ðàñïîëîæåííàÿ íà îäíîé ñ ïðîöåññîðîì ïëàòå â êàðòðèäæå S.E.C. äëÿ óñòàíîâêè â Slot 1.
Ñ ðîñòîì ïîïóëÿðíîñòè ìíîãîÿäåðíûõ ïðîöåññîðîâ íà êðèñòàëë ñòàëè äîáàâëÿòü êýøè òðåòüåãî óðîâíÿ, íàçâàííûå L3. Ýòîò óðîâåíü êýøà ìîæåò áûòü îáùèì äëÿ íåñêîëüêèõ ÿäåð è ðåàëèçîâûâàòü ýôôåêòèâíîå âçàèìîäåéñòâèå ìåæäó ÿäðàìè. Åãî îáúåì îáû÷íî áîëüøå ñóììàðíîãî îáúåìà êýøåé âñåõ ïîäêëþ÷åííûõ ê íåìó ÿäåð è ìîæåò äîñòèãàòü 8 ÌÁ.
Ïîïóëÿðíûì êýø íà ìàòåðèíñêîé ïëàòå îñòàâàëñÿ äî ýðû âûõîäà Pentium MMX, íî âûøåë èç óïîòðåáëåíèÿ ñ ââåäåíèåì SDRAM è ðîñòîì ðàçíèöû ìåæäó ÷àñòîòîé øèíû ïðîöåññîðà è ÷àñòîòîé ÿäðà ïðîöåññîðà: êýø íà ìàòåðèíñêîé ïëàòå ñòàë ëèøü íåìíîãèì áûñòðåå îñíîâíîé ÎÇÓ.
[ïðàâèòü] Ïðèìåð êýøà (ïðîöåññîðíîå ÿäðî Ê8)
Ïðèâåäåíà ñõåìà êýøåé ÿäðà ìèêðîïðîöåññîðîâ AMD K8, íà êîòîðîé âèäíû êàê ñïåöèàëèçèðîâàííûå êýøè òàê è èõ ìíîãîóðîâíåâîñòü.
ßäðî èñïîëüçóåò ÷åòûðå ðàçëè÷íûõ ñïåöèàëèçèðîâàííûõ êýøà: êýø èíñòðóêöèé, TLB èíñòðóêöèé, TLB äàííûõ è êýø äàííûõ:
- Êýø èíñòðóêöèé ñîñòîèò èç 64-áàéòíûõ áëîêîâ, ÿâëÿþùèõñÿ êîïèåé îñíîâíîé ïàìÿòè è ìîæåò ïîäãðóæàòü äî 16 áàéòîâ çà òàêò. Êàæäûé áàéò â ýòîì êýøå õðàíèòñÿ â 10 áèòàõ, à íå â 8, ïðè÷åì â äîïîëíèòåëüíûõ áèòàõ îòìå÷åíû ãðàíèöû èíñòðóêöèé (ò.î. êýø ïðîâîäèò ÷àñòè÷íîå ïðåääåêîäèðîâàíèå). Äëÿ ïðîâåðêè öåëîñòíîñòè äàííûõ èñïîëüçóåòñÿ ëèøü êîíòðîëü ÷åòíîñòè, à íå ECC, òàê êàê áèò ÷åòíîñòè çàíèìàåò ìåíüøå ìåñòà, à â ñëó÷àå ñáîÿ ïîâðåæäåííûå äàííûå ìîæíî îáíîâèòü ïðàâèëüíîé âåðñèåé èç ïàìÿòè.
- TLB èíñòðóêöèé ñîäåðæèò êîïèè çàïèñåé èç òàáëèöû ñòðàíèö. Íà êàæäûé çàïðîñ ÷òåíèÿ êîìàíä òðåáóåòñÿ òðàíñëÿöèÿ ìàòåìàòè÷åñêèõ àäðåñîâ â ôèçè÷åñêèå. Çàïèñè î òðàíñëÿöèè áûâàþò 4 è 8 áàéòíûìè è TLB ðàçáèò íà 2 ÷àñòè, ñîîòâåòñòâåííî îäíà äëÿ 4 ÊÁ îòîáðàæåíèé è äðóãàÿ äëÿ 2 è 4 ÌÁ îòîáðàæåíèé (áîëüøèå ñòðàíèöû). Òàêîå ðàçáèåíèå óïðîùàåò ñõåìû ïîëíîñòüþ àññîöèàòèâíîãî ïîèñêà â êàæäîé èç ÷àñòåé. ÎÑ è ïðèëîæåíèÿ ìîãóò èñïîëüçîâàòü îòîáðàæåíèÿ ðàçëè÷íîãî ðàçìåðà äëÿ ÷àñòåé âèðòóàëüíîãî àäðåñíîãî ïðîñòðàíñòâà.
- TLB äàííûõ ÿâëÿåòñÿ ñäâîåííûì, è îáà áóôåðà ñîäåðæàò îäèíàêîâûé íàáîð çàïèñåé. Èõ ñäâîåííîñòü ïîçâîëÿåò ïðîèçâîäèòü êàæäûé òàêò òðàíñëÿöèþ äëÿ äâóõ çàïðîñîâ ê äàííûì îäíîâðåìåííî. Òàêæå êàê è TLB èíñòðóêöèé ýòîò áóôåð ðàçäåëåí ìåæäó çàïèñÿìè äâóõ âèäîâ.
- Êýø äàííûõ ñîäåðæèò 64-áàéòíûå êîïèè ôðàãìåíòîâ ïàìÿòè. Îí ðàçäåëåí íà 8 áàíêîâ (áàíîê), êàæäûé ñîäåðæèò ïî 8 êèëîáàéò äàííûõ. Êýø ïîçâîëÿåò ïðîèçâîäèòü ïî äâà çàïðîñà ê 8-áàéòîâûì äàííûì êàæäûé òàêò, ïðè óñëîâèè, ÷òî çàïðîñû áóäóò îáðàáîòàíû ðàçëè÷íûìè áàíêàìè. Òåãîâûå ñòðóêòóðû â êýøå ïðîäóáëèðîâàíû, òàê êàê êàæäûé 64-áàéòíûé áëîê ðàñïðåäåëåí ïî âñåì 8 áàíêàì. Åñëè ñîâåðøàåòñÿ 2 çàïðîñà â îäèí òàêò, îíè ðàáîòàþò ñ ñîáñòâåííîé êîïèåé òåãîâîé èíôîðìàöèè.
Òàêæå â ýòîì ÿäðå èñïîëüçóþòñÿ ìíîãîóðîâíåâûå êýøè: äâóõóðîâíåâûå TLB èíñòðóêöèé è äàííûõ (íà âòîðîì óðîâíå õðàíÿòñÿ ëèøü çàïèñè î 4-êá îòîáðàæåíèÿõ), è êýø âòîðîãî óðîâíÿ (L2), óíèôèöèðîâàííûé äëÿ ðàáîòû êàê ñ êýøàìè äàííûõ è èíñòðóêöèé 1ãî óðîâíÿ, òàê è äëÿ ðàçëè÷íûõ TLB. Êýø L2 ÿâëÿåòñÿ ýêñêëþçèâíûì äëÿ L1 äàííûõ è L1 èíñòðóêöèé, òî åñòü êàæäûé êýøèðîâàííûé 8-áàéòîâûé ôðàãìåíò ìîæåò íàõîäèòüñÿ ëèáî â L1 èíñòðóêöèé, ëèáî â L1 äàííûõ, ëèáî â L2. Èñêëþ÷åíèåì ìîãóò áûòü ëèøü áàéòû, ñîñòàâëÿþùèå çàïèñè PTE, êîòîðûå ìîãóò íàõîäèòüñÿ îäíîâðåìåííî â TLB è â êýøå äàííûõ âî âðåìÿ îáðàáîòêè âèðòóàëüíîãî îòîáðàæåíèÿ ñî ñòîðîíû ÎÑ.  òàêîì ñëó÷àå ÎÑ îòâå÷àåò çà ñâîåâðåìåííûé ñáðîñ TLB ïîñëå îáíîâëåíèÿ çàïèñåé òðàíñëÿöèè.
[ïðàâèòü] DEC Alpha
 ìèêðîïðîöåññîðå DEC Alpha 21164 (âûïóùåííîì â íîÿáðå 1995 ãîäà ñ òàêòîâîé ÷àñòîòîé 333 ÌÃö), êýø ïåðâîãî óðîâíÿ ìîæåò ïîääåðæèâàòü íåêîòîðîå êîëè÷åñòâî (äî 21) íåîáðàáîòàííûõ ïðîìàõîâ. Èìååòñÿ øåñòèýëåìåíòíûé ôàéë àäðåñîâ íåîáðàáîòàííûõ ïðîìàõîâ (àíãë. miss address file, MAF), êàæäûé ýëåìåíò êîòîðîãî ñîäåðæèò àäðåñ è ðåãèñòð äëÿ çàãðóçêè ïðè ïðîìàõå (åñëè àäðåñà ïðîìàõà ïðèíàäëåæàò îäíîé ñòðîêå êýøà, òî â MAF îíè ðàññìàòðèâàþòñÿ êàê îäèí ýëåìåíò).
Ïîìèìî ðàçäåëüíûõ êýøåé L1 ñî ñêâîçíîé çàïèñüþ, íà êðèñòàëëå ïðîöåññîðà ðàñïîëîæåíû ÷àñòè÷íî-àññîöèàòèâíûé êýø L2 ñ îáðàòíîé çàïèñüþ è êîíòðîëëåð êýøà L3 ðàáîòàþùåãî êàê â ñèíõðîííîì, òàê è â àñèíõðîííîì ðåæèìå.
 âûïóùåííîì â ìàðòå 1997 ãîäà DEC Alpha 21164PC, âíåøíèé êýø âòîðîãî óðîâíÿ; îáú¸ì êýøà êîìàíä óâåëè÷åí äî 16 êÁ.
 ìèêðîïðîöåññîðå DEC Alpha 21264 íåò êýøà âòîðîãî óðîâíÿ (êîíòðîëëåð êîòîðîãî, òåì íå ìåíåå, ðàçìåùàåòñÿ íà êðèñòàëëå), íî êýø ïåðâîãî óðîâíÿ óâåëè÷åí äî 128 êÁ (ïî 64 êÁ äëÿ êýøà êîìàíä è êýøà äàííûõ ñîîòâåòñòâåííî).
[ïðàâèòü] PA-RISC
Ðàçðàáîòêà Hewlett-Packard äëÿ íàó÷íûõ è èíæåíåðíûõ âû÷èñëåíèé PA-8000 ñîäåðæèò áóôåð ïåðåóïîðÿäî÷èâàíèÿ àäðåñîâ (àíãë. ARB), îòñëåæèâàþùèé âñå êîìàíäû çàãðóçêè/ñîõðàíåíèÿ, êîòîðûé ïîçâîëÿåò ñîêðàòèòü çàäåðæêó àäðåñîâàíèÿ âíåøíåé êýø-ïàìÿòè äàííûõ è êîìàíä, êîòîðàÿ â äàííîì ïðîöåññîðå ìîæåò èìåòü îáú¸ì äî 4 ÌÁ. Òåì íå ìåíåå, äàæå ýôôåêòèâíîå óïðàâëåíèå âíåøíèì êýøåì ïðè ïîìîùè âûñîêîñêîðîñòíûõ ëèíèé óïðàâëåíèÿ è ïðåäâûáîðêè äàííûõ è êîìàíä èç îñíîâíîé ïàìÿòè â êýø, íå ñêîìïåíñèðîâàëî íåâûñîêóþ ñêîðîñòü è âûñîêóþ ñòîèìîñòü.
Óñòðàíèòü óêàçàííûå íåäîñòàòêè óäàëîñü â PA-8500, â êîòîðîì çà ñ÷¸ò òåõïðîöåññà 0,25 ìêì óäàëîñü äîáàâèòü íà êðèñòàëë 512 êÁ êýøà êîìàíä è 1 ÌÁ êýøà äàííûõ.
[ïðàâèòü] PowerPC
Ïîñòðîåííûé íà ãàðâàðäñêîé àðõèòåêòóðå PowerPC 620 ñîäåðæèò äâà âñòðîåííûõ êýøà, ¸ìêîñòüþ 32 êÁ êàæäûé, êîòîðûå èìåþò ñîáñòâåííûå áëîêè óïðàâëåíèÿ ïàìÿòüþ (àíãë. MMU) è ôóíêöèîíèðóþò íåçàâèñèìî äðóã îò äðóãà. Êîìàíäû è àäðåñà ïåðåõîäîâ êýøèðóþòñÿ â êýøå BTAC (àíãë. Branch-Target Adress Cache).
Øèííûé èíòåðôåéñ ïðîöåññîðà âêëþ÷àåò ïîëíóþ ðåàëèçàöèþ ïîääåðæêè êýøà âòîðîãî óðîâíÿ (îáú¸ìîì äî 128 ÌÁ, ðàáîòàþùåì íà ÷àñòîòå ïðîöåññîðà ëèáî âäâîå/â÷åòâåðî ìåíüøåé), è äëÿ óïðàâëåíèÿ ðàáîòîé âíåøíåãî êýøà íå òðåáóåò äîïîëíèòåëüíûõ òàêòîâ. Ðåàëèçîâàíà êîìáèíàöèÿ ñêâîçíîé è îáðàòíîé çàïèñè à òàêæå ïîääåðæêà ïðîòîêîëà MESI.
[ïðàâèòü] MIPS
Ñâîÿ ñïåöèôèêà ó êýøà L1 ïðèìåíÿåìîãî â RA-10000 â êàæäàÿ êîìàíäà â êýøå ñíàáæåíà äîïîëíèòåëüíûì ÷åòûð¸õáèòíûì òåãîì, êîòîðûé èñïîëüçóåòñÿ â äàëüíåéøåì äåêîäèðîâàíèè è êëàññèôèêàöèè êîìàíäû.
[ïðàâèòü] Òåêóùèå ðàçðàáîòêè
| Ýòîò ðàçäåë ñòàòüè åù¸ íå íàïèñàí.
Ñîãëàñíî çàìûñëó îäíîãî èç ó÷àñòíèêîâ Ýíöèêëîïåäèè, íà ýòîì ìåñòå äîëæåí ðàñïîëàãàòüñÿ ñïåöèàëüíûé ðàçäåë.
Âû ìîæåòå ïîìî÷ü ïðîåêòó, íàïèñàâ ýòîò ðàçäåë. |
[ïðàâèòü] Ïðèìå÷àíèÿ
- â‘ Âèêòîð Âëàäèìèðîâè÷ Êîðíååâ, Àíäðåé Âàëåíòèíîâè÷ Êèñåëåâ 1.2.3 Ñòðóêòóðíûå ìåòîäû óìåíüøåíèÿ âðåìåíè äîñòóïà ê ïàìÿòè // Ñîâðåìåííûå ìèêðîïðîöåññîðû. â Ì: «Íîëèäæ», 1998. â Ñ. 75-76. â 240 ñ. â 5 000 ýêç. â ISBN 5-98251-050-6
- â‘ Çàâèñèìîñòü ïðîèçâîäèòåëüíîñòè ïðîöåññîðà îò ðàçìåðà êýøà L2
- â‘ Understanding Caching. Linux Journal. Àðõèâèðîâàíî èç ïåðâîèñòî÷íèêà 27 àïðåëÿ 2012. Ïðîâåðåíî 2 ìàÿ 2010.
- â‘ http://www.theregister.co.uk/2004/05/06/hp_mx2_itaniummodule/ "HP has packed mx2 with 32MB of L4 cache "
- â‘ http://www.theregister.co.uk/2010/07/23/ibm_z196_mainframe_processor/ "L4 cache memory, which most servers do not have. (IBM added some L4 cache to its EXA chipsets for Xeon processors from Intel a few years back). This L4 cache is necessary for one key reason"
- â‘ IBM POWER4 Processor Review. Ixbtlabs "An important feature of the L3 cache is a capability to combine separate caches of POWER4 chips up to 4 (128 MBytes) which allows using address interleaving to speed up the access."
- â‘ Äåòàëüíîå èññëåäîâàíèå àðõèòåêòóðû AMD64 // ixbt.com, "Ïîäñèñòåìà êýøà. Ïîèñê è àíàëèç èçìåíåíèé"
- â‘ N.P.Jouppi. "Improving direct-mapped cache performance by the addition of a small fully-associative cache and prefetch buffers." - 17th Annual International Symposium on Computer Architecture, 1990. Proceedings., DOI:10.1109/ISCA.1990.134547
- â‘ Victim Cache Simulator
- â‘ The Processor-Memory performance gap. acm.org. Àðõèâèðîâàíî èç ïåðâîèñòî÷íèêà 27 àïðåëÿ 2012. Ïðîâåðåíî 8 íîÿáðÿ 2007.
- â‘ Ìèõàèë Ãóê 4. Êýøèðîâàíèå ïàìÿòè // Ïðîöåññîðû Pentium II, Pentium Pro è ïðîñòî Pentium. â Ì: Ïèòåð, 1999. â Ñ. 126-143. â 288 ñ. â 7 000 ýêç. â ISBN 5-8046-0043-5
- â‘ Âèêòîð Âëàäèìèðîâè÷ Êîðíååâ, Àíäðåé Âàëåíòèíîâè÷ Êèñåëåâ 2.2.1.2 Ðàçäåëüíûå êýø-ïàìÿòü êîìàíä è äàííûõ // Ñîâðåìåííûå ìèêðîïðîöåññîðû. â Ì: «Íîëèäæ», 1998. â Ñ. 75-76. â 240 ñ. â 5 000 ýêç. â ISBN 5-98251-050-6
[ïðàâèòü] Ñì. òàêæå
[ïðàâèòü] Ññûëêè
- Memory part 2: CPU caches Ñòàòüÿ íà lwn.net (àâòîð Ulrich Drepper) ñ äåòàëüíûì îïèñàíèåì êýøåé
- 8-way set-associative êýø íàïèñàííûé íà VHDL
| Òåõíîëîãèè öèôðîâûõ ïðîöåññîðîâ | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Àðõèòåêòóðà |
CISC · EDGE · EPIC · MISC · URISC · RISC · VLIW · ZISC · Ôîí Íåéìàíà · Ãàðâàðäñêàÿ · |
||||||||
| Ïàðàëëåëèçì |
|
||||||||
| Ðåàëèçàöèè | DSP · GPU · SoC · PPU · Âåêòîðíûé ïðîöåññîð · Ìàòåìàòè÷åñêèé ñîïðîöåññîð Ìèêðîïðîöåññîð · Ìèêðîêîíòðîëëåð | ||||||||
| Êîìïîíåíòû | Barrel shifter · FPU · BSB · MMU · TLB · Ðåãèñòðîâûé ôàéë · control unit · ÀËÓ Äåìóëüòèïëåêñîð · Ìóëüòèïëåêñîð · Ìèêðîêîä · Òàêòîâàÿ ÷àñòîòà Êîðïóñ Ðåãèñòðû Êýø (Êýø ïðîöåññîðà) | ||||||||
| Óïðàâëåíèå ïèòàíèåì | APM · ACPI · Clock gating · Äèíàìè÷åñêîå èçìåíåíèå ÷àñòîòû Äèíàìè÷åñêîå èçìåíåíèå íàïðÿæåíèÿ | ||||||||


