რა არის CPU Cache?

თანამედროვე პროცესორები წარმოუდგენლად სწრაფად მუშაობს; მათ შეუძლიათ მნიშვნელოვნად აჯობონ სისტემის RAM-ს. ეს სიჩქარის დისბალანსი CPU-სა და მეხსიერებას შორის გამოიწვევს თქვენს პროცესორს ხშირად უმოქმედო მდგომარეობაში დგომას და ელოდება მასში მონაცემების გაგზავნას, რათა გააგრძელოს პროცესის გაშვება. ამის თავიდან აცილების მიზნით, CPU-ებს უფრო სწრაფად და სწრაფად მუშაობის გასაგრძელებლად, გამოიყენება CPU ქეში.

როგორ აჩქარებს CPU ქეში CPU-ს?

CPU-ის ქეში შექმნილია ისე, რომ იყოს რაც შეიძლება სწრაფი და შემდეგ ქეში შეინახოს ის მონაცემები, რომლებსაც CPU ითხოვს. CPU-ის ქეშის სიჩქარე ოპტიმიზირებულია სამი გზით: შეყოვნება, გამტარობა და სიახლოვე. CPU ქეში მუშაობს ძალიან დაბალ შეყოვნებაზე, რაც ამცირებს შედეგის დაბრუნებისთვის საჭირო დროს. მაგალითად, Intel i9-9900k-ს აქვს ქეშის შეყოვნება 0.8, 2.4 და 11.1 ნანოწამი L1, L2 და L3 ქეში შესაბამისად. შედარებისთვის, თანამედროვე მაღალსიჩქარიანი ოპერატიული მეხსიერების დაყოვნება 14 ნანოწამის ტოლია.

რჩევა: ქეშის დონეები მოგვიანებით იქნება ახსნილი უფრო დეტალურად, მაგრამ უბრალოდ რომ ვთქვათ, ქეშის ქვედა ფენები უფრო სწრაფია, მაგრამ უფრო ძვირია, ამიტომ აქვთ უფრო დაბალი სიმძლავრე. ნანოწამი წამის მემილიარდედია, ამიტომ 0,8 წამის შეყოვნება ნიშნავს, რომ შედეგის დასაბრუნებლად წამის მემილიარდედზე ნაკლებია საჭირო.

გამტარუნარიანობის კუთხით, CPU ქეში გთავაზობთ შესრულების მნიშვნელოვან გაუმჯობესებას ტრადიციულ მეხსიერებასთან და RAM-თან შედარებით. L1 და L3 ქეშის წაკითხვის სიჩქარე შეიძლება მაქსიმუმს მიაღწიოს 2,3 ტბ/წმ და 370 გბ/წმ შესაბამისად, ხოლო ოპერატიული მეხსიერების გამტარუნარიანობა ჩვეულებრივ დაახლოებით 40 გბ/წმ-ს შეადგენს. ეს გაზრდილი გამტარობა ნიშნავს, რომ CPU ქეშს შეუძლია გადაიტანოს მონაცემები CPU-ზე ბევრად უფრო სწრაფად, ვიდრე RAM-ს შეუძლია.

მაქსიმალური სიჩქარის მისაღწევად, CPU-ის ქეში რეალურად არის ჩაშენებული თავად CPU-ს სილიკონში. ეს ამცირებს მანძილს, რომელიც საჭიროა ნებისმიერი ელექტრული სიგნალის გასავლელად, რაც შეძლებისდაგვარად ინარჩუნებს შეყოვნებას. მაგალითად, როდესაც L3 ქეში პირველად გადავიდა დედაპლატიდან CPU-ზე, იმდროინდელმა პროცესორმა (Pentium 4 EE) შეძლო 10-20% მუშაობის გაუმჯობესება.

CPU ქეშის არქიტექტურა

თანამედროვე პროცესორები, როგორც წესი, იყენებენ CPU-ის ქეშის სამ ფენას, სახელწოდებით L1-3, უფრო დაბალი ნომრის მქონე ქეშები უფრო ახლოს არიან CPU-ს ბირთვებთან, უფრო სწრაფი და ძვირი. მრავალბირთვიანი CPU-ის თითოეულ ცალკეულ ბირთვს აქვს საკუთარი L1 ქეში. ის ჩვეულებრივ იყოფა ორ ნაწილად, L1I და L1D. L1I გამოიყენება CPU-სთვის ინსტრუქციების ქეშირებისთვის, ხოლო L1D გამოიყენება იმ მონაცემების ქეშირებისთვის, რომლებზეც ეს ინსტრუქციები უნდა შესრულდეს.

თითოეულ CPU ბირთვს, როგორც წესი, აქვს საკუთარი L2 ქეში თანამედროვე პროცესორზე. L2 ქეში უფრო დიდი და ნელია ვიდრე L1 ქეში და ძირითადად გამოიყენება მონაცემთა შესანახად, რომელიც სხვაგვარად არ ჯდებოდა L2 ქეშში. თითო ბირთვზე გამოყოფილი L2 ქეშის არსებობით, ქეში ჩხუბის თავიდან აცილება ხდება. ქეშის დაპირისპირება არის ის, სადაც სხვადასხვა ბირთვი იბრძვის იმისათვის, რომ მოითხოვოს ქეში სივრცე საკუთარი დატვირთვისთვის, რამაც შეიძლება გამოიწვიოს მნიშვნელოვანი მონაცემების გასუფთავება ქეშიდან.

L3 ქეში ჩვეულებრივ გაზიარებულია პროცესორის ყველა CPU ბირთვს შორის. ისევ და ისევ, L3 ქეში უფრო ნელია ვიდრე L2 ქეში, მაგრამ უფრო იაფი და დიდია. გაზიარებული ქეშის მიწოდებით, შესაძლებელია შემცირდეს მონაცემთა რაოდენობა, რომელიც დუბლირებულია თითო ბირთვიანი ქეშის ქვედა დონეზე.

რჩევა: მაგალითად, ქეშის ზომებში Intel-ის i9-9900K-ს აქვს 64KB L1 და 256KB L2 ქეში თითო ბირთვზე (სულ 512KB L1 და 2MB L2), მას ასევე აქვს 16MB საერთო L3 ქეში.

როგორ გამოიყენება CPU ქეში?

CPU ქეშის ყველა დონე გამოიყენება პროცესორის მუშაობის დასაჩქარებლად RAM-დან მონაცემების ქეშირებით. როდესაც CPU ითხოვს მონაცემებს, ის ჩვეულებრივ ეძებს თავის ქეშის შრეებს, რათა რაც შეიძლება სწრაფად მიიღოს მონაცემები. თუ მონაცემები ნაპოვნია ქეშის დარტყმაში, მაშინ CPU-ს შეუძლია გააგრძელოს მისი დამუშავება. თუ მონაცემები არ არის ქეშში, რასაც უწოდებენ ქეშის გამოტოვებას, მაშინ CPU-მ უნდა შეამოწმოს ოპერატიული მეხსიერება და შემდეგ მყარი დისკი, თუ მონაცემები იქ არ არის. უფრო სწრაფი ფენები ყოველთვის პირველ რიგში მოწმდება მაქსიმალური შესრულებისთვის.

იმისთვის, რომ CPU-ს ჰქონდეს საჭირო მონაცემები ქეშში, როდესაც მას ეს სჭირდება, ქეში ცდილობს წინასწარ განსაზღვროს ის მონაცემები, რომლებიც CPU-ს შეიძლება დასჭირდეს შემდეგში. მაგალითად, თუ პროცესორმა მოითხოვა გარკვეული მონაცემები სურათისთვის, ის ასახავს ქეშს, შესაძლოა სცადოს წინასწარ ქეშის მეტი სურათის მონაცემები, რათა ის რაც შეიძლება სწრაფად მიეწოდება CPU-ს.