უახლესი სტატიები
მთავარი / სხვადასხვა / ჰიპერ threading ტექნოლოგიის მხარდაჭერა. Hyper-Threading ტექნოლოგია Intel-ისგან. პროდუქტიულობა არასოდეს არის საკმარისი

ჰიპერ threading ტექნოლოგიის მხარდაჭერა. Hyper-Threading ტექნოლოგია Intel-ისგან. პროდუქტიულობა არასოდეს არის საკმარისი

მომხმარებლებმა, რომლებმაც ერთხელ მაინც მოახდინეს BIOS-ის კონფიგურაცია, ალბათ უკვე შენიშნეს, რომ არსებობს Intel Hyper Threading პარამეტრი, რომელიც ბევრისთვის გაუგებარია. ბევრმა არ იცის რა არის ეს ტექნოლოგია და რა მიზნით გამოიყენება. შევეცადოთ გაერკვნენ, რა არის Hyper Threading და როგორ შეგიძლიათ ჩართოთ ამ მხარდაჭერის გამოყენება. ჩვენ ასევე შევეცდებით გაერკვნენ, თუ რა უპირატესობას ანიჭებს ის კომპიუტერს. ეს პარამეტრი. პრინციპში, აქ არაფერია რთული გასაგები.

Intel Hyper Threading: რა არის ეს?
თუ ღრმად არ შედიხართ კომპიუტერული ტერმინოლოგიის ჯუნგლებში, მაგრამ მარტივი ენით გადმოსცემთ, მაშინ ამ ტექნოლოგიასშექმნილია CPU-ს მიერ ერთდროულად დამუშავებული ბრძანებების ნაკადის გასაზრდელად. თანამედროვე პროცესორის ჩიპები, როგორც წესი, იყენებს ხელმისაწვდომი გამოთვლითი შესაძლებლობების მხოლოდ 70%-ს. დანარჩენი რჩება, ასე ვთქვათ, რეზერვში. რაც შეეხება მონაცემთა ნაკადის დამუშავებას, უმეტეს შემთხვევაში გამოიყენება მხოლოდ ერთი ძაფი, მიუხედავად იმისა, რომ სისტემა იყენებს მრავალბირთვიან პროცესორს.

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

ისტორიული ცნობა
მოდით, ცოტათი ჩავუღრმავდეთ ამ განვითარების ისტორიას. Hyper Threading მხარდაჭერა პირველად მხოლოდ Intel Pentium 4 პროცესორებში გამოჩნდა. მოგვიანებით ამ ტექნოლოგიის დანერგვა სერიაში გაგრძელდა. Intel Core iX (აქ X ნიშნავს პროცესორის სერიას). უნდა აღინიშნოს, რომ რატომღაც ის არ არის Core 2 პროცესორის ჩიპების ხაზში. მართალია, მაშინ პროდუქტიულობის ზრდა საკმაოდ სუსტი იყო: სადღაც 15-20% დონეზე. ეს მიუთითებდა იმაზე, რომ პროცესორს არ გააჩნდა საჭირო დამუშავების ძალა და შექმნილი ტექნოლოგია პრაქტიკულად უსწრებდა თავის დროს. დღეს Hyper Threading ტექნოლოგიის მხარდაჭერა უკვე ხელმისაწვდომია თითქმის ყველა თანამედროვე ჩიპში. ცენტრალური პროცესორის სიმძლავრის გასაზრდელად პროცესი თავად იყენებს ბროლის ზედაპირის მხოლოდ 5%-ს, ხოლო ტოვებს ადგილს ბრძანებებისა და მონაცემების დამუშავებისთვის.

კონფლიქტებისა და შესრულების საკითხი
ეს ყველაფერი, რა თქმა უნდა, კარგია, მაგრამ ზოგიერთ შემთხვევაში, მონაცემთა დამუშავებისას, შეიძლება მოხდეს მუშაობის შენელება. ეს ძირითადად განპირობებულია ეგრეთ წოდებული ფილიალის პროგნოზირების მოდულით და ქეშის არასაკმარისი ზომით, როდესაც ის მუდმივად გადაიტვირთება. თუ ვსაუბრობთ მთავარ მოდულზე, მაშინ შიგნით ამ საქმესსიტუაცია ისე ვითარდება, რომ ზოგიერთ შემთხვევაში პირველ თემას შეიძლება დასჭირდეს მონაცემები მეორედან, რომლებიც შეიძლება იმ მომენტში არ იყოს დამუშავებული ან დამუშავების რიგში არიან. ასევე, არანაკლებ ხშირია სიტუაციები, როდესაც ცენტრალური პროცესორის ბირთვს აქვს ძალიან სერიოზული დატვირთვა და მთავარი მოდული, ამის მიუხედავად, აგრძელებს მასზე მონაცემების გაგზავნას. ზოგიერთი პროგრამა და აპლიკაცია, როგორიცაა რესურსებით ინტენსიური ონლაინ თამაშები, შეიძლება სერიოზულად შეანელოს მხოლოდ იმიტომ, რომ მათ არ აქვთ ოპტიმიზაცია Hyper Threading ტექნოლოგიის გამოყენებისთვის. რა ხდება თამაშებთან? მომხმარებლის კომპიუტერული სისტემა, თავის მხრივ, ცდილობს აპლიკაციიდან სერვერზე მონაცემთა ნაკადების ოპტიმიზაციას. პრობლემა ის არის, რომ თამაშმა არ იცის როგორ დამოუკიდებლად გაავრცელოს მონაცემთა ნაკადები, ყველაფერი ერთ გროვაში გადაყაროს. ზოგადად, ის შეიძლება უბრალოდ არ იყოს შექმნილი ამისათვის. ზოგჯერ ორბირთვიან პროცესორებში შესრულების მატება მნიშვნელოვნად აღემატება 4 ბირთვიან პროცესორებს. მათ უბრალოდ არ აქვთ დამუშავების ძალა.

როგორ ჩართოთ Hyper Threading BIOS-ში?
ჩვენ უკვე ცოტათი გავარკვიეთ რა არის Hyper Threading ტექნოლოგია და გავეცანით მისი განვითარების ისტორიას. ჩვენ ახლოს მივედით იმის გაგებასთან, თუ რა არის Hyper Threading ტექნოლოგია. როგორ გავააქტიუროთ ეს ტექნოლოგია პროცესორში გამოსაყენებლად? აქ ყველაფერი კეთდება საკმაოდ მარტივად. თქვენ უნდა გამოიყენოთ BIOS მართვის ქვესისტემა. ქვესისტემაში შეყვანა ხდება Del, F1, F2, F3, F8, F12, F2+Del და ა.შ. თუ იყენებთ Sony Vaio ლეპტოპს, მაშინ მათ აქვთ სპეციალური შეყვანა სპეციალური ASSIST კლავიშის გამოყენებისას. BIOS-ის პარამეტრებში, თუ პროცესორი, რომელსაც იყენებთ, მხარს უჭერს Hyper Threading ტექნოლოგიას, უნდა იყოს სპეციალური დაყენების ხაზი. უმეტეს შემთხვევაში, ის ჰგავს Hyper Threading ტექნოლოგიას, ზოგჯერ კი ფუნქციას ჰგავს. ქვესისტემის შემქმნელისა და BIOS ვერსიიდან გამომდინარე, ამ პარამეტრის პარამეტრი შეიძლება შეიცავდეს მთავარ მენიუში ან გაფართოებულ პარამეტრებში. ამ ტექნოლოგიის გასააქტიურებლად, თქვენ უნდა შეხვიდეთ პარამეტრების მენიუში და დააყენოთ მნიშვნელობა ჩართულია. ამის შემდეგ, თქვენ უნდა შეინახოთ განხორციელებული ცვლილებები და გადატვირთოთ სისტემა.

რატომ არის Hyper Threading სასარგებლო?
დასასრულს, მინდა ვისაუბრო იმ უპირატესობებზე, რასაც Hyper Threading ტექნოლოგიის გამოყენება იძლევა. რისთვის არის ეს ყველაფერი? რატომ არის საჭირო ინფორმაციის დამუშავებისას პროცესორის სიმძლავრის გაზრდა? იმ მომხმარებლებს, რომლებიც მუშაობენ რესურსზე ინტენსიურ აპლიკაციებთან და პროგრამებთან, არაფრის ახსნა არ სჭირდებათ. ბევრმა ალბათ იცის, რომ გრაფიკული, მათემატიკური, დიზაინის პროგრამული პაკეტები მოითხოვს უამრავ სისტემურ რესურსს მუშაობის პროცესში. ამის გამო მთელი სისტემა იმდენად იტვირთება, რომ იწყებს საშინლად შენელებას. ამის თავიდან ასაცილებლად, რეკომენდებულია Hyper Threading მხარდაჭერის ჩართვა.

Intel-ის ბევრ პროცესორს აქვს მოდულები ჰიპერ მხარდაჭერა- Threading ტექნოლოგია, რომელიც, დეველოპერების იდეის შესაბამისად, უნდა დაეხმაროს ჩიპის მუშაობის გაზრდას და მთლიანობაში კომპიუტერის დაჩქარებას. რა არის ამ გადაწყვეტის სპეციფიკა ამერიკული კორპორაციისგან? როგორ შეგიძლიათ ისარგებლოთ Hyper-Threading-ით?

ტექნოლოგიის საფუძვლები

მოდით გადავხედოთ Hyper-Threading-ის ძირითად დეტალებს. რა არის ეს ტექნოლოგია? ის შეიქმნა Intel-ის მიერ და პირველად გააცნო საზოგადოებას 2001 წელს. მისი შექმნის მიზანი იყო სერვერების მუშაობის გაზრდა. Hyper-Threading-ში განხორციელებული მთავარი პრინციპი არის პროცესორის გამოთვლების განაწილება რამდენიმე ძაფზე. უფრო მეტიც, ეს შესაძლებელია მაშინაც კი, თუ მხოლოდ ერთი ბირთვი დაინსტალირებულია შესაბამის ტიპის მიკროსქემზე (თავის მხრივ, თუ მათგან 2 ან მეტია, და პროცესორში ძაფები უკვე განაწილებულია, ტექნოლოგია წარმატებით ავსებს ამ მექანიზმს).

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

Hyper-Threading-ის ჩართვა

თუ კომპიუტერში დაინსტალირებული პროცესორი მხარს უჭერს შესაბამის სტანდარტს, მაშინ ის ჩვეულებრივ აქტიურდება ავტომატურად. მაგრამ ზოგიერთ შემთხვევაში, თქვენ უნდა შეასრულოთ ხელით საჭირო მოქმედებები, რათა Hyper-Threading ტექნოლოგიამ იმუშაოს. როგორ გავააქტიურო? Ძალიან მარტივი.

თქვენ უნდა შეიყვანოთ ძირითადი BIOS ინტერფეისი. ამისათვის, კომპიუტერის ჩატვირთვის დასაწყისში, თქვენ უნდა დააჭიროთ DEL, ზოგჯერ - F2, F10, ნაკლებად ხშირად - სხვა კლავიშები, მაგრამ სასურველი ყოველთვის გამოჩნდება ეკრანზე გამოსახული ტექსტის ერთ სტრიქონში. კომპიუტერის ჩართვა. BIOS ინტერფეისში თქვენ უნდა იპოვოთ Hyper-Threading ელემენტი: I / O სისტემის ვერსიებში, რომლებიც მხარს უჭერენ მას, ის ჩვეულებრივ მდებარეობს თვალსაჩინო ადგილას. შესაბამისი ვარიანტის არჩევის შემდეგ, თქვენ უნდა დააჭიროთ Enter-ს და გაააქტიუროთ იგი, მონიშნოთ როგორც ჩართული. თუ ეს რეჟიმი უკვე დაყენებულია, მაშინ Hyper-Threading Technology მუშაობს. თქვენ შეგიძლიათ გამოიყენოთ ყველა მისი უპირატესობა. ტექნოლოგიის პარამეტრებში გააქტიურების შემდეგ, თქვენ უნდა შეინახოთ ყველა ჩანაწერი BIOS-ში Save and Exit Setup-ის არჩევით. ამის შემდეგ, კომპიუტერი გადაიტვირთება იმ რეჟიმში, როდესაც პროცესორი მუშაობს Hyper-Theading მხარდაჭერით. ანალოგიურად, Hyper-Threading გამორთულია. ამისათვის აირჩიეთ სხვა ვარიანტი შესაბამის პუნქტში - გამორთულია და შეინახეთ პარამეტრები.

მას შემდეგ რაც შევისწავლეთ, როგორ ჩართოთ Hyper-Threading და გამორთოთ ეს ტექნოლოგია, მოდით უფრო დეტალურად განვიხილოთ მისი მახასიათებლები.

პროცესორები Hyper Threading მხარდაჭერით

პირველი პროცესორი, რომელზეც კომპანიის კონცეფცია განხორციელდა, ზოგიერთი წყაროს მიხედვით, არის Intel Xeon MP, ასევე ცნობილი როგორც Foster MP. ეს ჩიპი მთელ რიგ არქიტექტურულ კომპონენტებში მსგავსია Pentium 4-ის, რომელმაც ასევე მოგვიანებით დანერგა აღნიშნული ტექნოლოგია. შემდგომში, მრავალძაფიანი გამოთვლითი ფუნქცია განხორციელდა Xeon სერვერის პროცესორებზე Prestonia ბირთვით.

თუ ვსაუბრობთ Hyper-Threading-ის ამჟამინდელ გავრცელებაზე - რომელი "პროფესიები" უჭერენ მხარს მას? ამ ტიპის ყველაზე პოპულარულ ჩიპებს შორის არის ის, რომელიც ეკუთვნის Core და Xeon ოჯახებს. ასევე არსებობს ინფორმაცია, რომ მსგავსი ალგორითმები დანერგილია ისეთ პროცესორებში, როგორიცაა Itanium და Atom.

Hyper-Threading-ის, მისი მხარდაჭერით პროცესორების შესახებ ძირითადი ინფორმაციის შესწავლის შემდეგ, მოდით გადავხედოთ ყველაზე გასაოცარ ფაქტებს ტექნოლოგიის განვითარების ისტორიის შესახებ.

განვითარების ისტორია

როგორც ზემოთ აღვნიშნეთ, Intel-მა განსახილველი კონცეფცია საზოგადოებას აჩვენა 2001 წელს. მაგრამ ტექნოლოგიის შექმნის პირველი ნაბიჯები 90-იანი წლების დასაწყისში გადაიდგა. ამერიკული კომპანიის ინჟინრებმა შენიშნეს, რომ კომპიუტერის პროცესორების რესურსები სრულად არ არის გამოყენებული რიგი ოპერაციების შესრულებისას.

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

თუმცა, IT სპეციალისტების უმეტესობა თანხმდება, რომ თუნდაც პროცესორის სიმძლავრის 70% არ იყოს უმოქმედო, მაგრამ მათი ძალიან მნიშვნელოვანი რაოდენობა.

დეველოპერების მთავარი ამოცანა

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

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

Intel-მა მოახერხა პრობლემის მოგვარება. თავდაპირველად, ტექნოლოგიას ეწოდა Willamette. 1999 წელს იგი დაინერგა ზოგიერთი პროცესორის არქიტექტურაში და დაიწყო მისი ტესტირება. მალე ტექნოლოგიამ მიიღო თანამედროვე სახელი - Hyper-Threading. ძნელი სათქმელია, რა იყო ეს - მარტივი რებრენდინგი თუ პლატფორმის ფუნდამენტური კორექტირება. ჩვენ უკვე ვიცით შემდგომი ფაქტები ტექნოლოგიის საჯაროდ გამოჩენასთან და მის დანერგვასთან დაკავშირებით Intel პროცესორების სხვადასხვა მოდელებში. დღეს გავრცელებული განვითარების სახელებს შორის არის Hyper-Threading Technology.

ტექნოლოგიასთან თავსებადობის ასპექტები

რამდენად კარგად არის დანერგილი Hyper-Threading ტექნოლოგიის მხარდაჭერა ოპერაციულ სისტემებში? შეიძლება აღინიშნოს, რომ თუ ვსაუბრობთ თანამედროვეზე ვინდოუსის ვერსიები, მაშინ მომხმარებლისთვის პრობლემა არ იქნება სრულად გამოიყენოს Intel Hyper-Threading ტექნოლოგიის უპირატესობები. რა თქმა უნდა, ასევე ძალიან მნიშვნელოვანია, რომ I/O სისტემა მხარს უჭერს ტექნოლოგიას - ამაზე ზემოთ ვისაუბრეთ.

პროგრამული და აპარატურის ფაქტორები

რაც შეეხება OS-ის ძველ ვერსიებს - Windows 98, NT და შედარებით მოძველებულ XP-ს, Hyper-Threading-თან თავსებადობის აუცილებელი პირობაა ACPI მხარდაჭერა. თუ ის არ არის დანერგილი OS-ში, მაშინ კომპიუტერის მიერ არ იქნება აღიარებული ყველა გამოთვლითი ნაკადი, რომელიც ჩამოყალიბებულია შესაბამისი მოდულებით. გაითვალისწინეთ, რომ Windows XP მთლიანად უზრუნველყოფს ამ ტექნოლოგიის სარგებელს. ასევე ძალიან სასურველია, რომ მრავალძაფის ალგორითმები განხორციელდეს კომპიუტერის მფლობელის მიერ გამოყენებულ აპლიკაციებში.

ზოგჯერ შეიძლება დაგჭირდეთ კომპიუტერი - თუ მასზე დააინსტალირებთ პროცესორებს Hyper-Threading-ის მხარდაჭერით, ნაცვლად იმ პროცესორებისა, რომლებიც თავდაპირველად იყო მასზე და არ იყო თავსებადი ტექნოლოგიასთან. თუმცა, როგორც ოპერაციული სისტემების შემთხვევაში, განსაკუთრებული პრობლემები არ იქნება, თუ მომხმარებელს აქვს თანამედროვე კომპიუტერი ან მინიმუმ შესაბამისი ტექნიკის კომპონენტები პირველი Hyper Threading პროცესორებისთვის, როგორც ზემოთ აღვნიშნეთ, დანერგილი და ადაპტირებული Core ხაზში. მას ჩიპსეტები დედაპლატებზე სრულად უჭერენ მხარს ჩიპის შესაბამის ფუნქციებს.

აჩქარების კრიტერიუმები

თუ კომპიუტერი აპარატურის და პროგრამული კომპონენტების დონეზე არ არის თავსებადი Hyper-Threading-თან, მაშინ ამ ტექნოლოგიას, თეორიულად, შეუძლია მისი მუშაობის შენელებაც კი. ამ მდგომარეობამ აიძულა ზოგიერთ IT პროფესიონალს ეჭვი შეეპაროს Intel-ის გადაწყვეტის პერსპექტივაში. მათ გადაწყვიტეს, რომ ეს არ იყო ტექნოლოგიური ნახტომი, არამედ მარკეტინგული ნაბიჯი, რომელიც საფუძვლად უდევს Hyper Threading-ის კონცეფციას, რომელსაც თავისი არქიტექტურის გამო არ შეუძლია მნიშვნელოვნად დააჩქაროს კომპიუტერი. მაგრამ კრიტიკოსების ეჭვები სწრაფად გააქარწყლეს Intel-ის ინჟინრებმა.

ამრიგად, ტექნოლოგიის წარმატებით გამოყენების ძირითადი პირობები:

I/O სისტემის მიერ Hyper-Threading-ის მხარდაჭერა;

დედაპლატის თავსებადობა შესაბამისი ტიპის პროცესორთან;

ტექნოლოგიის მხარდაჭერა ოპერაციული სისტემის მიერ და მასზე გაშვებული კონკრეტული აპლიკაციის მიერ.

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

ყოველ შემთხვევაში, არსებობს კვლევები, რომლებიც ადასტურებენ ორბირთვიან მიკროსქემებზე ადაპტირებული პროგრამების მუშაობის გაზრდას დაახლოებით 15-18%-ით, თუ პროცესორში მუშაობს Intel Hyper Threading მოდულები. ჩვენ უკვე ვიცით, როგორ გამორთოთ ისინი (იმ შემთხვევაში, თუ მომხმარებელს ეჭვი ეპარება ტექნოლოგიის გამოყენების მიზანშეწონილობაში). მაგრამ, ალბათ, ძალიან ცოტა ხელშესახები მიზეზია მათი გარეგნობისთვის.

Hyper-Threading-ის პრაქტიკული სარგებლობა

მოახდინა თუ არა ამ ტექნოლოგიამ ხელშესახები გავლენა Intel-ზე? ამ საკითხზე განსხვავებული მოსაზრებები არსებობს. მაგრამ ბევრი აღნიშნავს, რომ Hyper-Threading ტექნოლოგია იმდენად პოპულარული გახდა, რომ ეს გადაწყვეტა შეუცვლელი გახდა სერვერული სისტემების მრავალი მწარმოებლისთვის და ის ასევე დადებითად იქნა მიღებული კომპიუტერის რიგითი მომხმარებლების მიერ.

ტექნიკის მონაცემთა დამუშავება

ტექნოლოგიის მთავარი უპირატესობა ის არის, რომ იგი დანერგილია ტექნიკის ფორმატში. ანუ, გამოთვლების ძირითადი ნაწილი შესრულდება პროცესორის შიგნით სპეციალურ მოდულებზე და არა პროგრამული ალგორითმების სახით, რომლებიც გადაეცემა მიკროსქემის მთავარი ბირთვის დონეზე - რაც გულისხმობს მთლიანი მუშაობის შემცირებას. კომპიუტერი. ზოგადად, IT ექსპერტების აზრით, Intel-ის ინჟინრებმა მოახერხეს პრობლემის გადაჭრა, რომელიც მათ აღმოაჩინეს ტექნოლოგიის განვითარების დასაწყისში - პროცესორის უფრო ეფექტურად ფუნქციონირება. მართლაც, როგორც ტესტებმა აჩვენა, ბევრი ამოცანის გადაჭრისას, რომლებიც პრაქტიკულად მნიშვნელოვანია მომხმარებლისთვის, Hyper-Threading-ის გამოყენებამ შესაძლებელი გახადა სამუშაოს მნიშვნელოვნად დაჩქარება.

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

სხვადასხვა ამოცანების ერთდროული გადაწყვეტა

ამრიგად, Hyper-Threading-ის მხარდაჭერის მქონე პროცესორები უკეთესად ადაპტირებულია, ვიდრე მიკროსქემები, რომლებიც არ არიან თავსებადი მასთან, რათა ერთდროულად გაუშვან, მაგალითად, ბრაუზერი, დაუკრათ მუსიკა და იმუშაონ დოკუმენტებთან. რა თქმა უნდა, ყველა ამ უპირატესობას მომხმარებელი პრაქტიკაში გრძნობს მხოლოდ იმ შემთხვევაში, თუ კომპიუტერის პროგრამული და აპარატურის კომპონენტები საკმარისად თავსებადია ამ რეჟიმთან.

მსგავსი მოვლენები

Hyper-Threading არ არის ერთადერთი ტექნოლოგია, რომელიც შექმნილია კომპიუტერის მუშაობის გასაუმჯობესებლად მრავალ ხრახნიანი გამოთვლით. მას აქვს ანალოგები.

მაგალითად, IBM-ის მიერ გამოშვებული POWER5 პროცესორები ასევე მხარს უჭერენ მრავალთრეადინგს. ანუ, თითოეულს (ჯამში მასზე დამონტაჟებულია 2 შესაბამისი ელემენტი) შეუძლია დავალებების შესრულება 2 ძაფში. ამრიგად, მიკროცირკულა ამუშავებს გამოთვლების 4 ნაკადს ერთდროულად.

AMD-ს ასევე აქვს შესანიშნავი შედეგები მრავალძაფის კონცეფციების სფეროში. ასე რომ, ცნობილია, რომ ბულდოზერის არქიტექტურა იყენებს Hyper-Threading-ის მსგავს ალგორითმებს. AMD-ის გადაწყვეტის თავისებურება ის არის, რომ თითოეული თემა ამუშავებს ცალკეულ პროცესორის ბლოკებს. როდესაც მეორე დონე რჩება საერთო. მსგავსი კონცეფციები დანერგილია AMD-ის მიერ შემუშავებულ Bobcat-ის არქიტექტურაში, რომელიც ადაპტირებულია ლეპტოპებისა და მცირე კომპიუტერებისთვის.

რა თქმა უნდა, კონცეფციის პირდაპირი ანალოგები AMD, IBM და Intel-დან შეიძლება ძალიან პირობითად ჩაითვალოს. ასევე ზოგადად პროცესორების არქიტექტურის დიზაინის მიდგომებს. მაგრამ შესაბამის ტექნოლოგიებში დანერგილი პრინციპები შეიძლება ჩაითვალოს საკმაოდ მსგავსი და დეველოპერების მიერ დასახული მიზნები მიკროსქემების ფუნქციონირების ეფექტურობის გაუმჯობესების თვალსაზრისით, არსებითად ძალიან ახლოს არის, თუ არა იდენტური.

ეს არის ძირითადი ფაქტები Intel-ის ყველაზე საინტერესო ტექნოლოგიასთან დაკავშირებით. რა არის ეს, როგორ უნდა ჩართოთ Hyper-Threading ან, პირიქით, გამორთოთ იგი, ჩვენ დავადგინეთ. საქმე, ალბათ, მისი უპირატესობების პრაქტიკულ გამოყენებაშია, რაც შეიძლება გამოყენებულ იქნას იმით, რომ კომპიუტერი აპარატურულ და პროგრამულ კომპონენტებში მხარს უჭერს ტექნოლოგიას.

Hyper Threading (ჰიპერ threading, "ჰიპერ threading", ჰიპერ threading - რუს.) - კომპანიის მიერ შემუშავებული ტექნოლოგია ინტელი, რომელიც საშუალებას აძლევს პროცესორის ბირთვს შეასრულოს ერთზე მეტი (ჩვეულებრივ ორი) მონაცემთა ნაკადი. მას შემდეგ, რაც გაირკვა, რომ ჩვეულებრივი პროცესორი უმეტეს ამოცანებს იყენებს არაუმეტეს 70% მთელი გამოთვლითი სიმძლავრისგან, გადაწყდა, გამოეყენებინათ ტექნოლოგია, რომელიც საშუალებას იძლევა, როდესაც გარკვეული გამოთვლითი ერთეულები უმოქმედოა, დატვირთონ ისინი სხვა ძაფით. ეს საშუალებას გაძლევთ გაზარდოთ ბირთვის შესრულება 10-დან 80%-მდედავალების მიხედვით.

ნახეთ როგორ მუშაობს Hyper-Threading .

დავუშვათ, რომ პროცესორი ასრულებს მარტივ გამოთვლებს და ამავდროულად ინსტრუქციების ბლოკი უმოქმედოა და SIMDგაფართოებები.

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

ბუნებრივია, ვირტუალური ძაფი არ აღწევს სრულყოფილ ბირთვს, მაგრამ ეს საშუალებას გაძლევთ მიაღწიოთ თითქმის 100% გამოთვლითი სიმძლავრის ეფექტურობა, იტვირთება თითქმის მთელი პროცესორი სამუშაოთი, არ უშვებს მას უმოქმედოდ. ამ ყველაფერთან ერთად, HT ტექნოლოგიის დანერგვამხოლოდ დაახლ. 5% დამატებითი სივრცე და შესრულება ზოგჯერ შეიძლება დაემატოს 50% . ეს დამატებითი ტერიტორია მოიცავს რეგისტრების დამატებით ბლოკებს და განშტოებების პროგნოზირებას, რაც აუმჯობესებს გამოთვლას, თუ სად შეიძლება გამოთვლითი სიმძლავრის გამოყენება ამ მომენტშიდა გაგზავნეთ მონაცემები იქ დამატებითი მისამართების ბლოკიდან.

პირველად ტექნოლოგია გამოჩნდა პროცესორებზე პენტიუმი 4, მაგრამ შესრულების დიდი ზრდა არ ყოფილა, რადგან თავად პროცესორს არ გააჩნდა მაღალი გამოთვლითი ძალა. ზრდა საუკეთესო შემთხვევაში იყო 15-20% და ბევრ ამოცანაში პროცესორი მუშაობდა ბევრად ნელა, ვიდრე მის გარეშე HT.

Შეანელე პროცესორი ტექნოლოგიის გამო Hyper Threading, ხდება თუ:

  • არ არის საკმარისი ქეშიყველა მოცემულისთვის და ის ციკლურად გადაიტვირთება, რაც ანელებს პროცესორს.
  • მონაცემების სწორად დამუშავება ფილიალის პროგნოზირებით შეუძლებელია. წარმოიქმნება ძირითადად იმის გამო ოპტიმიზაციის ნაკლებობაკონკრეტული პროგრამული უზრუნველყოფის ან ოპერაციული სისტემის მხარდაჭერისთვის.
  • ის ასევე შეიძლება მოხდეს იმის გამო მონაცემთა დამოკიდებულებები, როდესაც, მაგალითად, პირველი თემა მოითხოვს დაუყოვნებლივ მონაცემებს მეორისგან, მაგრამ ისინი ჯერ არ არიან მზად, ან ელოდებათ რიგში სხვა თემას. ან ციკლურ მონაცემებს სჭირდება გარკვეული ბლოკები სწრაფი დამუშავებისთვის და ისინი იტვირთება სხვა მონაცემებით. მონაცემთა დამოკიდებულების მრავალი ვარიაცია შეიძლება იყოს.
  • თუ ბირთვი უკვე მძიმედ არის დატვირთული და ფილიალის პროგნოზირების მოდული „არასაკმარისად ჭკვიანი“ მაინც აგზავნის მონაცემებს, რომლებიც ანელებს პროცესორს (შესაბამისია პენტიუმი 4).

შემდეგ პენტიუმი 4, ინტელიდაიწყო ტექნოლოგიის გამოყენება მხოლოდ Core i7პირველი თაობა, გამოტოვებს სერიას 2 .

პროცესორების დამუშავების სიმძლავრე საკმარისი გახდა ჰიპერთრედინგის სრული განხორციელებისთვის დიდი ზიანის გარეშე, თუნდაც არაოპტიმიზებული აპლიკაციებისთვის. მოგვიანებით, Hyper Threadingგამოჩნდა საშუალო კლასის პროცესორებზე და თუნდაც საბიუჯეტო და პორტატული. გამოიყენება ყველა სერიაზე ბირთვი ი (i3; i5; i7) და შემდეგ მობილური პროცესორები ატომი(არაფერს). საინტერესოა, რომ ორბირთვიანი პროცესორები HT, მიიღე უფრო მეტი შესრულების მომატება, ვიდრე ოთხბირთვიანი გამოყენებით Hyper Threading, დგას 75% სრულფასოვანი ოთხი ბირთვული.

სად არის HyperThreading სასარგებლო?

ის სასარგებლო იქნება პროფესიონალურ, გრაფიკულ, ანალიტიკურ, მათემატიკურ და სამეცნიერო პროგრამებთან, ვიდეო და აუდიო რედაქტორებთან, არქივებთან ერთად გამოყენებისთვის ( Photoshop, Corel Draw, Maya, 3D's Max, WinRar, Sony Vegas და ა.შ.). ყველა პროგრამა, რომელიც იყენებს ბევრ გამოთვლებს, HTაუცილებლად სასარგებლო იქნება. საბედნიეროდ, in 90% ასეთ შემთხვევებში, ასეთი პროგრამები კარგად არის ოპტიმიზირებული მისი გამოყენებისთვის.

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

ბევრი კომპიუტერული თამაშები , უარყოფითად არის დაკავშირებული ყოფნასთან Hyper Threading, რაც ამცირებს კადრების რაოდენობას წამში. ეს გამოწვეულია ოპტიმიზაციის ნაკლებობით Hyper Threadingთამაშის მხრიდან. ოპერაციული სისტემის ერთი ოპტიმიზაცია ყოველთვის არ არის საკმარისი, განსაკუთრებით უჩვეულო, ჰეტეროგენულ და რთულ მონაცემებთან მუშაობისას.

დედაპლატებზე, რომლებიც მხარს უჭერენ HT, ყოველთვის შეგიძლიათ გამორთოთ ჰიპერთრედინგის ტექნოლოგია.

2015 წლის 20 იანვარი, 07:43 სთ

მეტი Hyper-Threading-ის შესახებ

  • IT სისტემების ტესტირება,
  • პროგრამირება

იყო დრო, როდესაც საჭირო იყო მეხსიერების მუშაობის შეფასება Hyper-threading ტექნოლოგიის კონტექსტში. მივედით დასკვნამდე, რომ მისი გავლენა ყოველთვის დადებითი არ არის. როდესაც გამოჩნდა თავისუფალი დროის კვანტური, გაჩნდა სურვილი, გაეგრძელებინა კვლევა და განეხილა მიმდინარე პროცესები მანქანური ციკლების და ბიტების სიზუსტით, გამოყენებით პროგრამული უზრუნველყოფასაკუთარი განვითარება.

გამოკვლეული პლატფორმა

ექსპერიმენტების ობიექტი - ASUS ლეპტოპი N750JK Intel Core i7-4700HQ პროცესორით. საათის სიჩქარეა 2.4 გჰც, გაძლიერებული Intel Turbo Boost რეჟიმით 3.4 გჰც-მდე. დაინსტალირებულია 16 გიგაბაიტი შემთხვევითი წვდომის მეხსიერება DDR3-1600 (PC3-12800) მუშაობს ორარხიან რეჟიმში. Ოპერაციული სისტემა - Microsoft Windows 8.1 64 ბიტი.

ნახ.1 შესწავლილი პლატფორმის კონფიგურაცია.

შესასწავლი პლატფორმის პროცესორი შეიცავს 4 ბირთვს, რომელიც Hyper-Threading ტექნოლოგიის ჩართვისას უზრუნველყოფს 8 ძაფების ან ლოგიკური პროცესორის ტექნიკის მხარდაჭერას. პლატფორმის firmware გადასცემს ამ ინფორმაციას ოპერაციულ სისტემას MADT (Multiple APIC Description Table) ACPI ცხრილის მეშვეობით. ვინაიდან პლატფორმა შეიცავს მხოლოდ ერთ RAM კონტროლერს, არ არსებობს SRAT (System Resource Affinity Table), რომელიც აცხადებს პროცესორის ბირთვების სიახლოვეს მეხსიერების კონტროლერებთან. ცხადია, ლეპტოპი არ არის NUMA პლატფორმა, მაგრამ ოპერაციული სისტემა, გაერთიანების მიზნით, განიხილავს მას, როგორც NUMA სისტემას ერთი დომენით, როგორც მითითებულია ხაზით NUMA Nodes = 1. ფაქტი, რომელიც ფუნდამენტურია ჩვენი ექსპერიმენტებისთვის არის ის, რომ პირველი დონის მონაცემთა ქეშს აქვს ზომა 32 კილობაიტი თითოეულისთვის. ოთხი ბირთვიდან. ორი ლოგიკური პროცესორი, რომლებიც იზიარებენ ერთსა და იმავე ბირთვს, იზიარებენ L1 და L2 ქეშებს.

გამოკვლეული ოპერაცია

ჩვენ გამოვიკვლევთ მონაცემთა ბლოკის წაკითხვის სიჩქარის დამოკიდებულებას მის ზომაზე. ამისათვის ჩვენ ავირჩევთ ყველაზე პროდუქტიულ მეთოდს, კერძოდ, 256-ბიტიანი ოპერანდების კითხვას VMOVAPD AVX ინსტრუქციის გამოყენებით. დიაგრამებზე X-ღერძი აჩვენებს ბლოკის ზომას, ხოლო Y-ღერძი აჩვენებს წაკითხვის სიჩქარეს. X წერტილის სიახლოვეს, რომელიც შეესაბამება პირველი დონის ქეშის ზომას, ჩვენ ველით, რომ დავინახოთ გადახრის წერტილი, რადგან შესრულება უნდა შემცირდეს დამუშავებული ბლოკის ქეშიდან გასვლის შემდეგ. ჩვენს ტესტში, მრავალძალიანობის შემთხვევაში, 16 წამოწყებული ძაფიდან თითოეული მუშაობს მისამართების ცალკე დიაპაზონით. აპლიკაციის შიგნით Hyper-Threading ტექნოლოგიის გასაკონტროლებლად, თითოეული თემა იყენებს SetThreadAffinityMask API ფუნქციას, რომელიც ადგენს ნიღაბს, რომელშიც თითოეული ლოგიკური პროცესორი შეესაბამება ერთ ბიტს. ბიტის ერთი მნიშვნელობა საშუალებას იძლევა გამოიყენოს მითითებული პროცესორი მითითებული ძაფით, ნულოვანი მნიშვნელობა კრძალავს მას. შესწავლილი პლატფორმის 8 ლოგიკური პროცესორისთვის ნიღაბი 11111111b იძლევა ყველა პროცესორის გამოყენების საშუალებას (Hyper-Threading ჩართულია), ნიღაბი 01010101b საშუალებას იძლევა გამოიყენოს ერთი ლოგიკური პროცესორი თითოეულ ბირთვში (Hyper-Threading გამორთულია).

გრაფიკებზე გამოიყენება შემდეგი აბრევიატურები:

MBPS (მეგაბაიტი წამში)წაკითხვის სიჩქარის დაბლოკვა მეგაბაიტებში წამში;

CPI (საათები ინსტრუქციაზე)ციკლების რაოდენობა ინსტრუქციაზე;

TSC (დროის შტამპის მრიცხველი)პროცესორის ციკლის მრიცხველი.

შენიშვნა: TSC რეგისტრის საათის სიჩქარე შეიძლება არ ემთხვეოდეს პროცესორის საათის სიჩქარეს Turbo Boost რეჟიმში მუშაობისას. ეს უნდა იქნას გათვალისწინებული შედეგების ინტერპრეტაციისას.

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

გამოცდილება ნომერი 1. ერთი ძაფი



ნახ.2 ერთ თემაში კითხვა

მაქსიმალური სიჩქარეა 213563 მეგაბაიტი წამში. შებრუნების წერტილი ხდება ბლოკის ზომაზე დაახლოებით 32 კილობაიტი.

გამოცდილება ნომერი 2. 16 თემა 4 პროცესორზე, Hyper-Threading გამორთულია



ნახ.3 თექვსმეტ ძაფში კითხვა. გამოყენებული ლოგიკური პროცესორების რაოდენობა ოთხია

Hyper-threading გამორთულია. მაქსიმალური სიჩქარეა 797598 მეგაბაიტი წამში. შებრუნების წერტილი ხდება ბლოკის ზომაზე დაახლოებით 32 კილობაიტი. როგორც მოსალოდნელი იყო, ერთი ძაფით კითხვასთან შედარებით, სიჩქარე გაიზარდა დაახლოებით 4-ჯერ, სამუშაო ბირთვების რაოდენობის მიხედვით.

გამოცდილება ნომერი 3. 16 თემა 8 პროცესორზე, ჩართულია Hyper-Threading



ნახ.4 თექვსმეტ ძაფში კითხვა. გამოყენებული ლოგიკური პროცესორების რაოდენობა რვაა

Hyper-threading ჩართულია. მაქსიმალური სიჩქარე 800722 მეგაბაიტი წამში, Hyper-Threading-ის ჩართვის შედეგად, თითქმის არ გაიზარდა. დიდი მინუსი არის ის, რომ შებრუნების წერტილი ხდება ბლოკის ზომაზე დაახლოებით 16 კილობაიტი. Hyper-Threading-ის ჩართვამ ოდნავ გაზარდა მაქსიმალური სიჩქარე, მაგრამ ახლა სიჩქარის ვარდნა ხდება ბლოკის ზომის ნახევარზე - დაახლოებით 16 კილობაიტი, ამიტომ საშუალო სიჩქარე მნიშვნელოვნად დაეცა. ეს გასაკვირი არ არის, თითოეულ ბირთვს აქვს საკუთარი L1 ქეში, ხოლო ლოგიკური პროცესორები იმავე ბირთვში იზიარებენ მას.

დასკვნები

გამოკვლეული ოპერაცია საკმაოდ კარგად ვრცელდება მრავალბირთვიან პროცესორზე. მიზეზი ის არის, რომ თითოეული ბირთვი შეიცავს პირველი და მეორე დონის საკუთარ ქეში მეხსიერებას, სამიზნე ბლოკის ზომა შედარებულია ქეშის მეხსიერების ზომასთან და თითოეული ძაფი მუშაობს მისამართების საკუთარი დიაპაზონით. აკადემიური მიზნებისთვის, ჩვენ შევქმენით ასეთი პირობები სინთეზურ ტესტში, იმის გაცნობიერებით, რომ რეალური აპლიკაციები, როგორც წესი, შორს არის იდეალური ოპტიმიზაციისგან. მაგრამ Hyper-Threading-ის ჩართვამ, თუნდაც ამ პირობებში, უარყოფითი გავლენა მოახდინა, პიკური სიჩქარის უმნიშვნელო მატებით, მნიშვნელოვანი დანაკარგია ბლოკების დამუშავების სიჩქარე, რომელთა ზომა 16-დან 32-მდეა დიაპაზონში. კილობაიტები.

ჩვენ დავწერეთ, რომ ერთპროცესორიანი Xeon სისტემების გამოყენებას აზრი არ აქვს, რადგან უფრო მაღალ ფასში მათი შესრულება იქნება იგივე, რაც იმავე სიხშირის Pentium 4-ის. ახლა, უფრო დეტალური შემოწმების შემდეგ, ეს განცხადება, სავარაუდოდ, ოდნავ შესწორებული იქნება. Intel Xeon-ში დანერგილი Hyper-Threading ტექნოლოგია Prestonia ბირთვით ნამდვილად მუშაობს და საკმაოდ ხელშესახებ ეფექტს იძლევა. მიუხედავად იმისა, რომ მისი გამოყენებისას ასევე ბევრი კითხვაა ...

მიეცით შესრულება

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

შესრულების მუდმივი ზრდა, რა თქმა უნდა, საჭიროა. სულ მცირე, ეს არის მომგებიანი ბიზნესი და ყოველთვის არის კარგი გზა, რომ წაახალისოთ მომხმარებლები, განაახლონ გუშინდელი "სუპერ-შემსრულებელი CPU" ხვალინდელ "კიდევ სუპერ…". მაგალითად, მეტყველების ერთდროული ამოცნობა და ერთდროული თარგმნა სხვა ენაზე - ეს ხომ ყველას ოცნება არ არის? ან თითქმის „კინო“ ხარისხის უჩვეულოდ რეალისტური თამაშები (მთლიანად შთანთქავს ყურადღებას და ზოგჯერ ფსიქიკაში სერიოზულ ცვლილებებს იწვევს) – განა ეს არ არის ბევრი გეიმერის სურვილი, ახალგაზრდა და უფროსი?

ოღონდ ამ შემთხვევაში გამოვტოვოთ მარკეტინგული ასპექტები, ტექნიკურ ასპექტებზე გავამახვილოთ ყურადღება. უფრო მეტიც, ყველაფერი ასე პირქუში არ არის: არის გადაუდებელი ამოცანები (სერვერის აპლიკაციები, სამეცნიერო გამოთვლები, მოდელირება და ა.შ.), სადაც ყველაფერი უფრო მეტია. მაღალი დონის შესრულებაგანსაკუთრებით საჭიროა ცენტრალური გადამამუშავებელი ერთეული.

მაშ, როგორია მათი შესრულების გაზრდის გზები?

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

პროცესორის რესურსების გაზრდა- მაგალითად, ქეშის მოცულობის გაზრდა, ახალი ბლოკების (Execution Units) დამატება. ეს ყველაფერი იწვევს ტრანზისტორების რაოდენობის ზრდას, პროცესორის სირთულეს, ბროლის ფართობის ზრდას და, შესაბამისად, ღირებულებას.

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

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

გარდა "სუფთა" მულტიპროცესირებისა, არსებობს რამდენიმე "შუალედური" ვარიანტი, რომელიც საშუალებას გაძლევთ დააჩქაროთ განაცხადის შესრულება:

ჩიპების მრავალპროცესირება (CMP)- ორი პროცესორის ბირთვი ფიზიკურად განლაგებულია ერთ ჩიპზე, საერთო ან ცალკე ქეშის გამოყენებით. ბუნებრივია, ბროლის ზომა საკმაოდ დიდი აღმოჩნდება და ეს არ იმოქმედებს ღირებულებაზე. გაითვალისწინეთ, რომ ამ "ორმაგი" პროცესორებიდან რამდენიმე შეიძლება ასევე იმუშაოს მრავალპროცესორულ სისტემაში.

Time Slice Multithreading. პროცესორი გადადის პროგრამის ძაფებს შორის ფიქსირებული ინტერვალებით. ზედნადები ზოგჯერ შეიძლება საკმაოდ სოლიდური იყოს, განსაკუთრებით თუ პროცესი ელოდება.

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

ერთდროული მრავალძაფი. ამ შემთხვევაში, პროგრამის ძაფები შესრულებულია იმავე პროცესორზე „ერთდროულად“, ანუ მათ შორის გადართვის გარეშე. CPU რესურსები ნაწილდება დინამიურად, პრინციპით „თუ არ იყენებ, მიეცი სხვას“. სწორედ ამ მიდგომას უდევს საფუძველი ინტელის ტექნოლოგიები Hyper-Threading, რომელსაც ახლა მივმართავთ.

როგორ მუშაობს Hyper-Threading

მოგეხსენებათ, მიმდინარე „გამოთვლითი პარადიგმა“ მოიცავს მრავალძაფიანი გამოთვლა. ეს ეხება არა მხოლოდ სერვერებს, სადაც ასეთი კონცეფცია თავდაპირველად არსებობს, არამედ სამუშაო სადგურებსა და დესკტოპ სისტემებსაც. თემა შეიძლება ეკუთვნოდეს ერთსა და იმავე აპლიკაციებს, მაგრამ თითქმის ყოველთვის არის ერთზე მეტი აქტიური თემა (ამის სანახავად საკმარისია Windows 2000/XP-ში Task Manager-ის გახსნა და ძაფების რაოდენობის ჩვენების ჩართვა). ამავდროულად, ჩვეულებრივ პროცესორს შეუძლია მხოლოდ ერთი ძაფების შესრულება ერთდროულად და იძულებულია მუდმივად გადართოს მათ შორის.

პირველად Hyper-Threading ტექნოლოგია დანერგეს Intel Xeon MP (Foster MP) პროცესორში, რომელზედაც ის „გაშვებული იყო“. შეგახსენებთ, რომ Xeon MP, ოფიციალურად წარმოდგენილი IDF 2002 წლის გაზაფხულზე, იყენებს Pentium 4 Willamette ბირთვს, შეიცავს 256 KB L2 ქეშს და 512 KB/1 MB L3 ქეშს და მხარს უჭერს 4 პროცესორის კონფიგურაციას. Hyper-Threading მხარდაჭერა ასევე წარმოდგენილია Intel Xeon პროცესორში სამუშაო სადგურებისთვის (Prestonia core, 512 KB L2 ქეში), რომელიც ბაზარზე ცოტა ადრე შემოვიდა, ვიდრე Xeon MP. ჩვენი მკითხველი უკვე იცნობს Intel Xeon-ის ორმაგი პროცესორის კონფიგურაციას, ამიტომ განვიხილავთ Hyper-Threading-ის შესაძლებლობებს ამ CPU-ების მაგალითის გამოყენებით - როგორც თეორიულად, ასევე პრაქტიკულად. როგორც არ უნდა იყოს, "უბრალო" Xeon უფრო ამქვეყნიური და ასათვისებელია, ვიდრე Xeon MP 4 პროცესორიან სისტემებში...

Hyper-Threading-ის მოქმედების პრინციპი ეფუძნება იმ ფაქტს, რომ ნებისმიერ დროს პროგრამული კოდის შესრულებისას გამოიყენება პროცესორის რესურსების მხოლოდ ნაწილი. გამოუყენებელი რესურსები ასევე შეიძლება დაიტვირთოს სამუშაოთი - მაგალითად, კიდევ ერთი აპლიკაცია (ან იგივე აპლიკაციის სხვა ძაფი) შეიძლება გამოყენებულ იქნას პარალელური შესრულებისთვის. ერთ ფიზიკურ Intel Xeon პროცესორში ყალიბდება ორი ლოგიკური პროცესორი (LP - Logical Processor), რომლებიც იზიარებენ CPU-ს გამოთვლით რესურსებს. ოპერაციული სისტემა და აპლიკაციები ზუსტად „ხედავენ“ ორ პროცესორს და შეუძლიათ მათ შორის სამუშაოს განაწილება, როგორც სრულფასოვანი ორპროცესორიანი სისტემის შემთხვევაში.

Hyper-Threading-ის დანერგვის ერთ-ერთი მიზანია მხოლოდ ერთ აქტიურ ძაფს დაუშვას იმავე სიჩქარით, როგორც ჩვეულებრივ CPU-ზე. ამისათვის პროცესორს აქვს მუშაობის ორი ძირითადი რეჟიმი: Single-Task (ST) და Multi-Task (MT). ST რეჟიმში აქტიურია მხოლოდ ერთი ლოგიკური პროცესორი და იყენებს ხელმისაწვდომ რესურსებს განუყოფლად (ST0 და ST1 რეჟიმები); სხვა LP შეჩერებულია HALT ბრძანებით. როდესაც მეორე პროგრამის ძაფი გამოჩნდება, უმოქმედო ლოგიკური პროცესორი გააქტიურებულია (შეწყვეტის გზით) და ფიზიკური CPU გადადის MT რეჟიმში. გამოუყენებელი LP-ების შეჩერება HALT ბრძანებით არის ოპერაციული სისტემის პასუხისმგებლობა, რომელიც საბოლოო ჯამში პასუხისმგებელია ერთი ნაკადის იგივე სწრაფ შესრულებაზე, როგორც ჰიპერ-Threading-ის გარეშე.

ორი LP-დან თითოეულისთვის ინახება ე.წ. არქიტექტურის მდგომარეობა (AS), რომელიც მოიცავს სხვადასხვა ტიპის რეგისტრების მდგომარეობას - ზოგადი დანიშნულების, კონტროლის, APIC და სერვისი. თითოეულ LP-ს აქვს საკუთარი APIC (შეფერხების კონტროლერი) და რეგისტრების კომპლექტი, სწორი მუშაობისთვის, რომლითაც დანერგილია რეგისტრის სხვათა ცხრილის (RAT) კონცეფცია, რომელიც აკონტროლებს კორესპონდენციას რვა IA-32 ზოგადი დანიშნულების რეგისტრსა და 128-ს შორის. CPU ფიზიკური რეგისტრები (ერთი RAT თითოეული LP-სთვის).

ორი ძაფების გაშვებისას, მხარდაჭერილია შემდეგი ინსტრუქციის პოინტერების ორი შესაბამისი ნაკრები. ინსტრუქციების უმეტესობა აღებულია Trace Cache-დან (TC), სადაც ისინი ინახება დეკოდირებულ ფორმაში და ორი აქტიური LP წვდომა აქვს TC-ს თავის მხრივ, ყოველ საათზე. ამავდროულად, როდესაც მხოლოდ ერთი LP არის აქტიური, ის იძენს ექსკლუზიურ წვდომას TC-ზე საათებზე გადარევის გარეშე. ანალოგიურად, მიკროკოდის ROM-ზე წვდომა ხდება. ITLB ბლოკები (Instruction Translation Look-aside Buffer), რომლებიც გააქტიურებულია ინსტრუქციების ქეში საჭირო ინსტრუქციების არარსებობის შემთხვევაში, დუბლირებულია და თითოეულს აწვდის ინსტრუქციებს საკუთარი თემისთვის. IA-32 Instruction Decode ინსტრუქციის დეკოდირების ბლოკი გაზიარებულია და იმ შემთხვევაში, როდესაც ინსტრუქციის გაშიფვრა საჭიროა ორივე ნაკადისთვის, ის ემსახურება მათ სათითაოდ (ისევ ყოველ ციკლს). Uop Queue და Allocator ბლოკები იყოფა ორად, ელემენტების ნახევარი გამოყოფილია თითოეული LP-სთვის. 5 ცალი განრიგები ამუშავებენ დეკოდირებული ბრძანებების რიგებს (Uops) მიუხედავად იმისა, რომ ეკუთვნის LP0 / LP1 და პირდაპირი ბრძანებები უნდა შესრულდეს საჭირო აღმასრულებელი ერთეულების მიერ - დამოკიდებულია პირველის შესრულებისთვის მზადყოფნაზე და მეორის ხელმისაწვდომობაზე. ყველა დონის ქეში (L1/L2 Xeon-ისთვის, ასევე L3 Xeon MP-სთვის) მთლიანად გაზიარებულია ორ LP-ს შორის, თუმცა მონაცემთა მთლიანობის უზრუნველსაყოფად, ჩანაწერები DTLB-ში (Data Translation Look-aside Buffer) მოწოდებულია აღწერებით. ლოგიკური პროცესორის ID-ების ფორმა.

ამრიგად, ორივე ლოგიკური პროცესორის ინსტრუქციები შეიძლება შესრულდეს ერთდროულად ერთი ფიზიკური პროცესორის რესურსებზე, რომლებიც იყოფა ოთხ კლასად:

  • დუბლირებული (Duplicated);
  • სრულად გაზიარებული (Fully Shared);
  • ელემენტების აღწერებით (Entry Tagged);
  • დინამიურად გაყოფილი (Partitioned) ST0/ST1 ან MT მუშაობის რეჟიმის მიხედვით.

თუმცა, აპლიკაციების უმეტესობა, რომლებიც აჩქარებულია მრავალპროცესორულ სისტემებზე, ასევე შეიძლება დაჩქარდეს CPU-ზე, რომელზეც ჩართულია Hyper-Threading ყოველგვარი ცვლილებების გარეშე. მაგრამ არის პრობლემებიც: მაგალითად, თუ ერთი პროცესი მოლოდინის რეჟიმშია, მას შეუძლია აითვისოს ფიზიკური CPU-ს ყველა რესურსი, რაც ხელს უშლის მეორე LP-ს მუშაობას. ამრიგად, Hyper-Threading-ის გამოყენებისას შესრულება ზოგჯერ შეიძლება შემცირდეს (20%-მდე). ამის თავიდან ასაცილებლად Intel გირჩევთ გამოიყენოთ PAUSE ინსტრუქცია ცარიელი ლოდინის მარყუჟების ნაცვლად (დანერგილია IA-32-ში, Pentium 4-ით დაწყებული). ასევე მიმდინარეობს სერიოზული მუშაობა შედგენის დროს კოდის ავტომატურ და ნახევრად ავტომატურ ოპტიმიზაციაზე - მაგალითად, Intel OpenMP C ++ / Fortran Compilers () სერიის შემდგენლებმა ამ მხრივ მნიშვნელოვანი პროგრესი მიაღწიეს.

Hyper-Threading-ის პირველი განხორციელების კიდევ ერთი მიზანი, Intel-ის თანახმად, იყო ტრანზისტორების რაოდენობის, ღეროების ფართობისა და ენერგიის მოხმარების ზრდის მინიმუმამდე შემცირება და შესრულების შესამჩნევად გაზრდა. ამ ვალდებულების პირველი ნაწილი უკვე შესრულებულია: Xeon/Xeon MP-ზე Hyper-Threading-ის მხარდაჭერის დამატებამ გაზარდა კვარცხლბეკის ფართობი და ენერგიის მოხმარება 5%-ზე ნაკლებით. რა მოხდა მეორე ნაწილთან (სპექტაკლი), ჩვენ ჯერ არ უნდა შევამოწმოთ.

პრაქტიკული ნაწილი

გასაგები მიზეზების გამო, ჩვენ არ გამოვცადეთ 4-პროცესორიანი სერვერის სისტემები Xeon MP-ზე ჩართული Hyper-Threading-ით. ჯერ ერთი, საკმაოდ შრომატევადი. და მეორეც, თუ ჩვენ გადავწყვიტეთ მსგავს წარმატებას, ჯერ კიდევ ახლა, ოფიციალური განცხადებიდან ერთ თვეზე ნაკლებია, აბსოლუტურად არარეალურია ამ ძვირადღირებული აღჭურვილობის მიღება. ამიტომ, გადავწყვიტეთ შემოვიფარგლოთ იმავე სისტემით ორი Intel Xeon 2.2 გჰც სიხშირით, რომელზეც ჩატარდა ამ პროცესორების პირველი ტესტები (იხილეთ ბმული სტატიის დასაწყისში). სისტემა ეფუძნებოდა დედაპლატასუპერმიკრო P4DC6+ ( ინტელის ჩიპსეტი i860), შეიცავდა 512 MB RDRAM, ვიდეო ბარათს GeForce3 ჩიპზე (64 MB DDR, Detonator 21.85 დრაივერები), HDD დასავლური ციფრული WD300BB და 6X DVD-ROM; Windows 2000 Professional SP2 გამოიყენებოდა როგორც OS.

პირველი, რამდენიმე ზოგადი შთაბეჭდილება. ერთი Xeon-ის დაყენებისას Prestonia ბირთვით გაშვებისას სისტემის BIOSაჩვენებს შეტყობინებას ორი CPU-ს არსებობის შესახებ; თუ ორი პროცესორია დაინსტალირებული, მომხმარებელი ხედავს შეტყობინებას ოთხი CPU-ის შესახებ. ოპერაციული სისტემა ჩვეულებრივ ცნობს "ორივე პროცესორს", მაგრამ მხოლოდ იმ შემთხვევაში, თუ დაკმაყოფილებულია ორი პირობა.

პირველი, CMOS Setup-ში, ეს უკანასკნელი BIOS ვერსიები Supermicro P4DCxx დაფებმა წარმოადგინეს Enable Hyper-Threading ელემენტი, რომლის გარეშეც OS ამოიცნობს მხოლოდ ფიზიკურ პროცესორ(ებ)ს. მეორეც, ACPI გამოიყენება OS-სთვის სათქმელად, რომ არსებობს დამატებითი ლოგიკური პროცესორები. ამიტომ, Hyper-Threading-ის ჩასართავად, ACPI ვარიანტი უნდა იყოს ჩართული CMOS Setup-ში და HAL (Hardware Abstraction Layer) ACPI მხარდაჭერით ასევე უნდა იყოს დაინსტალირებული თავად OS-სთვის. საბედნიეროდ, Windows 2000-ში HAL-ის შეცვლა სტანდარტული კომპიუტერიდან (ან MPS Uni-/Multiprocessor PC) ACPI Uni-/Multiprocessor PC-ზე მარტივია - მოწყობილობის მენეჯერში „კომპიუტერის დრაივერის“ შეცვლით. ამავდროულად, Windows XP-ისთვის ACPI HAL-ზე მიგრაციის ერთადერთი ლეგალური გზა არის სისტემის ხელახლა ინსტალაცია არსებული ინსტალაციის თავზე.

მაგრამ ახლა ყველა მზადება მზადდება და ჩვენს Windows 2000 Pro-ს უკვე მტკიცედ სჯერა, რომ ის მუშაობს ორპროცესორიან სისტემაზე (თუმცა სინამდვილეში მხოლოდ ერთი პროცესორია დაინსტალირებული). ახლა, როგორც ყოველთვის, დროა გადაწყვიტოთ ტესტირების მიზნები. ასე რომ, ჩვენ გვინდა:

  • შეაფასეთ Hyper-Threading-ის გავლენა სხვადასხვა კლასის აპლიკაციების შესრულებაზე.
  • შეადარეთ ეს ეფექტი მეორე პროცესორის დაყენების ეფექტს.
  • შეამოწმეთ რამდენად "საკმაოდ" რესურსები მიეცემა აქტიურ ლოგიკურ პროცესორს, როდესაც მეორე LP უმოქმედოა.

შესრულების შესაფასებლად, ჩვენ ავიღეთ მკითხველისთვის უკვე ნაცნობი აპლიკაციების ნაკრები, რომელიც გამოიყენებოდა სამუშაო სადგურების სისტემების ტესტირებაში. დავიწყოთ, ალბათ, ბოლოდან და შევამოწმოთ ლოგიკური პროცესორების „თანასწორობა“. ყველაფერი ძალიან მარტივია: ჩვენ ჯერ ვაწარმოებთ ტესტებს ერთ პროცესორზე, რომელსაც გამორთული აქვს Hyper-Threading, შემდეგ კი ვიმეორებთ პროცესს ჩართული Hyper-Threading-ით და ვიყენებთ მხოლოდ ერთი ორი ლოგიკური CPU-დან (Task Manager-ის გამოყენებით). ვინაიდან ამ შემთხვევაში ჩვენ მხოლოდ ფარდობითი მნიშვნელობები გვაინტერესებს, ყველა ტესტის შედეგები მცირდება "მეტი, უკეთესი" ფორმამდე და ნორმალიზდება (ერთპროცესორული სისტემის ინდიკატორები Hyper-Threading-ის გარეშე აღებულია როგორც ერთეული).

როგორც ხედავთ, Intel-ის დაპირებები აქ შესრულებულია: მხოლოდ ერთი აქტიური ძაფით, თითოეული ორი LP-ის შესრულება ზუსტად უტოლდება ფიზიკური პროცესორის მუშაობას Hyper-Threading-ის გარეშე. უმოქმედო LP (როგორც LP0, ასევე LP1) ფაქტობრივად შეჩერებულია და საზიარო რესურსები, რამდენადაც შესაძლებელია მიღებული შედეგების მიხედვით, მთლიანად გადადის აქტიური LP-ის გამოყენებაზე.

აქედან გამომდინარე, ჩვენ ვაკეთებთ პირველ დასკვნას: ორი ლოგიკური პროცესორი ფაქტობრივად თანაბარია უფლებებით და Hyper-Threading-ის ჩართვა „არ ერევა“ ერთი ძაფის მუშაობაში (რაც თავისთავად ცუდი არ არის). ახლა ვნახოთ, „გეხმარება“ თუ არა ეს ჩართვა და თუ ასეა, სად და როგორ?

გაწევა. ოთხი ტესტის შედეგები 3D მოდელირების პაკეტებში 3D Studio MAX 4.26, Lightwave 7b და A|W Maya 4.0.1 მათი მსგავსების გამო გაერთიანებულია ერთ დიაგრამაში.

ოთხივე შემთხვევაში (Lightwave-სთვის - ორი განსხვავებული სცენა), CPU დატვირთვა ერთი პროცესორის თანდასწრებით გამორთული Hyper-Threading-ით თითქმის მუდმივად ინახება 100%-ზე. თუმცა, როდესაც Hyper-Threading ჩართულია, სცენების გამოთვლა დაჩქარებულია (შედეგად, ჩვენ ხუმრობაც კი გვქონდა CPU-ს 100%-ზე მეტი გამოყენების შესახებ). სამ ტესტში ჩვენ შეგვიძლია დავინახოთ ეფექტურობის ზრდა Hyper-Threading-დან 14--18%-ით - ერთის მხრივ, არც თუ ისე ბევრი მეორე პროცესორთან შედარებით, მაგრამ, მეორე მხრივ, საკმაოდ კარგია, თუ გავითვალისწინებთ "თავისუფალ" ეფექტს. ეს ეფექტი. Lightwave-ის ორი ტესტიდან ერთ-ერთში შესრულების მომატება თითქმის ნულის ტოლია (როგორც ჩანს, უცნაურობებით სავსე ამ აპლიკაციის სპეციფიკა მოქმედებს). მაგრამ უარყოფითი შედეგი არსად არის და დანარჩენ სამ შემთხვევაში შესამჩნევი მატება გამამხნევებელია. და ეს იმის მიუხედავად, რომ პარალელური რენდერინგის პროცესები აკეთებენ მსგავს სამუშაოს და, რა თქმა უნდა, ვერ გამოიყენებენ ფიზიკური CPU-ს რესურსებს ამავე დროს საუკეთესოდ.

Photoshop და MP3 კოდირება. GOGO-no-coda 2.39c კოდეკი არის ერთ-ერთი იმ მცირერიცხოვანთაგან, რომელიც მხარს უჭერს SMP-ს და აჩვენებს მუშაობის 34%-იან ზრდას ორმაგი პროცესორისგან. ამასთან, Hyper-Threading-ის ეფექტი ამ შემთხვევაში ნულის ტოლია (3%-იან განსხვავებას არ მივიჩნევთ მნიშვნელოვანად). მაგრამ Photoshop 6.0.1-ის ტესტში (სკრიპტი, რომელიც შედგება ბრძანებების და ფილტრების დიდი ნაკრებისგან), შეგიძლიათ იხილოთ შენელება, როდესაც ჩართულია Hyper-Threading, თუმცა მეორე ფიზიკური CPU ამ შემთხვევაში მატებს შესრულების 12%-ს. აქ, ფაქტობრივად, არის პირველი შემთხვევა, როდესაც Hyper-Threading იწვევს შესრულების ვარდნას ...

პროფესიონალური OpenGL. დიდი ხანია ცნობილია, რომ SPEC ViewPerf და ბევრი სხვა OpenGL აპლიკაცია ხშირად ანელებს SMP სისტემებზე.

OpenGL და ორმაგი პროცესორი: რატომ არ არიან მეგობრები

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

ბუნებრივია, ეს უცნაურობა მხოლოდ ჩვენ არ შევნიშნეთ. ზოგიერთმა ტესტერმა უბრალოდ ჩუმად გვერდი აუარა ამ ფაქტს - მაგალითად, SPEC ViewPerf-ის შედარების შედეგების მიწოდებით მხოლოდ ორმაგი პროცესორის კონფიგურაციისთვის, რითაც თავიდან აიცილა განმარტებები "რატომ არის ორმაგი პროცესორიანი სისტემა უფრო ნელი?". სხვებმა გააკეთეს ყველა სახის ფანტასტიკური ვარაუდი ქეშის თანმიმდევრულობის, მისი შენარჩუნების აუცილებლობის, შედეგად მიღებული ზედნადების შესახებ და ა.შ. და რატომღაც, არავის გაუკვირდა, რომ, მაგალითად, პროცესორები მოუთმენლად აკვირდებოდნენ თანმიმდევრულობას ზუსტად ფანჯრიანი OpenGL რენდერით (მისი "გამოთვლითი" არსებით, იგი დიდად არ განსხვავდება ნებისმიერი სხვა გამოთვლითი ამოცანისგან).

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

  • არის ორზე მეტი ან მეტი ერთდროულად შემსრულებელი პროგრამის თემა (threads);
  • ეს ძაფები არ ერევა ერთმანეთის შესრულებაში - მაგალითად, ისინი არ ეჯიბრებიან საერთო რესურსს, როგორიცაა გარე დისკი ან ქსელის ინტერფეისი.

ახლა, მოდით შევხედოთ გამარტივებულ სახეს, თუ როგორ გამოიყურება OpenGL რენდერი, რომელიც შესრულებულია ორი ძაფით. თუ აპლიკაცია, „ხედავს“ ორ პროცესორს, ქმნის ორ OpenGL-რენდერირების თემას, მაშინ თითოეული მათგანისთვის, OpenGL-ის წესების მიხედვით, იქმნება საკუთარი gl-კონტექსტი. შესაბამისად, თითოეული თემა ასახავს საკუთარ gl კონტექსტს. მაგრამ პრობლემა ის არის, რომ ფანჯრისთვის, რომელშიც სურათი არის ნაჩვენები, მხოლოდ ერთი gl-კონტექსტი შეიძლება იყოს მიმდინარე ნებისმიერ დროს. შესაბამისად, ძაფები ამ შემთხვევაში უბრალოდ "სათითაოდ" გამოსცემენ წარმოქმნილ სურათს ფანჯარაში, რაც მათ კონტექსტს მონაცვლეობით აქტუალურს ხდის. ზედმეტია იმის თქმა, რომ ეს "კონტექსტური გადარევა" შეიძლება ძალიან ძვირი დაჯდეს ზედნადების თვალსაზრისით?

ასევე, როგორც მაგალითი, ჩვენ მივცემთ გრაფიკებს ორი CPU-ის გამოყენების შესახებ რამდენიმე აპლიკაციაში, რომლებიც აჩვენებს OpenGL სცენებს. ყველა გაზომვა განხორციელდა პლატფორმაზე შემდეგი კონფიგურაციით:

  • ერთი ან ორი Intel Xeon 2.2 GHz (Hyper-Threading გამორთულია);
  • 512 MB RDRAM;
  • Supermicro P4DC6+ დედაპლატა;
  • ASUS V8200 Deluxe ვიდეო ბარათი (NVidia GeForce3, 64 MB DDR SDRAM, Detonator 21.85 დრაივერი);
  • Windows 2000 Professional SP2;
  • ვიდეო რეჟიმი 1280x1024x32 bpp, 85 Hz, Vsync გამორთულია.

ცისფერი და წითელი არის CPU 0 და CPU 1 დატვირთვის გრაფიკები, შესაბამისად. ხაზი შუაში არის CPU გამოყენების საბოლოო გრაფიკი. სამი გრაფიკი შეესაბამება ორ სცენას 3D Studio MAX 4.26-დან და SPEC ViewPerf ტესტის ნაწილს (AWadvs-04).


CPU გამოყენება: Animation 3D Studio MAX 4.26 - Anibal (მანიპულატორებით). max


CPU გამოყენება: Animation 3D Studio MAX 4.26 - Rabbit.max


CPU გამოყენება: SPEC ViewPerf 6.1.2 - AWadvs-04

იგივე ნიმუში მეორდება სხვა აპლიკაციებში, რომლებიც იყენებენ OpenGL-ს. ორი პროცესორი საერთოდ არ აწუხებს მუშაობას და CPU მთლიანი გამოყენება 50-60% დონეზეა. ამავდროულად, ერთპროცესორული სისტემისთვის, ყველა ამ შემთხვევაში, CPU გამოყენება დამაჯერებლად ინახება 100% დონეზე.

ასე რომ, გასაკვირი არ არის, რომ ბევრი OpenGL აპლიკაცია არ ხდება ბევრად უფრო სწრაფად ორმაგ სისტემებზე. ისე, რომ ხანდახან ანელებენ კიდეც, ჩვენი აზრით, სრულიად ლოგიკური ახსნა აქვს.

შეგვიძლია განვაცხადოთ, რომ ორი ლოგიკური CPU-ით შესრულების ვარდნა კიდევ უფრო მნიშვნელოვანია, რაც სავსებით გასაგებია: ორი ლოგიკური პროცესორი ერთმანეთში ერევა ისევე, როგორც ორი ფიზიკური. მაგრამ მათი საერთო შესრულება, რა თქმა უნდა, უფრო დაბალია ამ შემთხვევაში, ასე რომ, როდესაც ჩართულია Hyper-Threading, ის უფრო მეტად იკლებს, ვიდრე უბრალოდ, როდესაც მუშაობს ორი ფიზიკური CPU. შედეგი პროგნოზირებადია და დასკვნა მარტივია: Hyper-Threading, ისევე როგორც "რეალური" SMP, ზოგჯერ უკუნაჩვენებია OpenGL-სთვის.

CAD აპლიკაციები. წინა დასკვნა დასტურდება ორი CAD ტესტის შედეგებით - SPECapc SolidEdge V10-ისთვის და SPECapc SolidWorks-ისთვის. ამ ტესტების გრაფიკული შესრულება Hyper-Threading-ისთვის მსგავსია (თუმცა შედეგი ოდნავ მაღალია SolidEdge V10-ისთვის SMP სისტემის შემთხვევაში). მაგრამ CPU_Score ტესტების შედეგები, რომლებიც იტვირთავს პროცესორს, გაფიქრებინებს: 5-10% ზრდა SMP-დან და 14-19% შენელება Hyper-Threading-ისგან.

მაგრამ დღის ბოლოს, Intel გულწრფელად აღიარებს შესრულების დეგრადაციის პოტენციალს Hyper-Threading-ით ზოგიერთ შემთხვევაში - მაგალითად, ცარიელი ლოდინის მარყუჟების გამოყენებისას. ჩვენ შეგვიძლია მხოლოდ ვივარაუდოთ, რომ ეს არის მიზეზი (SolidEdge და SolidWorks კოდების დეტალური გამოკვლევა სცილდება ამ სტატიის ფარგლებს). ყოველივე ამის შემდეგ, ყველამ იცის CAD პროგრამის შემქმნელების კონსერვატიზმი, რომლებიც უპირატესობას ანიჭებენ დადასტურებულ საიმედოობას და არ ჩქარობენ კოდის გადაწერას პროგრამირების ახალი ტენდენციების გათვალისწინებით.

შეჯამება, ან "ყურადღება, სწორი კითხვა"

Hyper-Threading მუშაობს, ამაში ეჭვი არ არის. რა თქმა უნდა, ტექნოლოგია არ არის უნივერსალური: არის აპლიკაციები, რომლებისთვისაც Hyper-Threading „ცუდი ხდება“ და ამ ტექნოლოგიის გავრცელების შემთხვევაში, სასურველი იქნებოდა მათი მოდიფიცირება. მაგრამ იგივე არ დაემართა MMX-ს და SSE-ს და კვლავაც ხდება SSE2-ზე?..

თუმცა, ეს აჩენს საკითხს ამ ტექნოლოგიის გამოყენებადობის შესახებ ჩვენს რეალობასთან. ჩვენ დაუყოვნებლივ გავუქმებთ ერთპროცესორულ სისტემას Xeon-ზე Hyper-Threading-ით (ან განვიხილავთ მას მხოლოდ დროებით, მეორე პროცესორის შეძენის მოლოდინში): შესრულების 30%-იანი მატებაც კი არ ამართლებს ფასს. გზა - მაშინ უმჯობესია იყიდოთ ჩვეულებრივი Pentium 4. დარჩენილი პროცესორების რაოდენობა არის ორიდან ან მეტიდან.

ახლა წარმოვიდგინოთ, რომ ვყიდულობთ ორპროცესორიან Xeon სისტემას (ვთქვათ, Windows 2000/XP Professional-ით). დაინსტალირებულია ორი CPU, ჩართულია Hyper-Threading, BIOS აღმოაჩენს ოთხ ლოგიკურ პროცესორს, ახლა მოდით ავხსნათ ... Stop. მაგრამ რამდენ პროცესორს დაინახავს ჩვენი ოპერაციული სისტემა? მართალია, ორი. მხოლოდ ორი, რადგან ის უბრალოდ არ არის განკუთვნილი უფრო დიდი რაოდენობისთვის. ეს იქნება ორი ფიზიკური პროცესორი, ანუ ყველაფერი იმუშავებს ზუსტად ისევე, როგორც გამორთული Hyper-Threading - არა ნელი (ორი "დამატებითი" ლოგიკური CPU უბრალოდ გაჩერდება), მაგრამ არა უფრო სწრაფი (დამოწმებული დამატებითი ტესტებით, შედეგები არ არის მითითებული. მათი აშკარაობა). ჰმ, არც ისე სახალისო...

რა რჩება? ნუ დააინსტალირეთ Advanced Server ან .NET Server ჩვენს სამუშაო სადგურზე, მართლა? არა, სისტემა დაინსტალირდება, ამოიცნობს ოთხივე ლოგიკურ პროცესორს და იმუშავებს. ეს უბრალოდ სერვერის OS უყურებს სამუშაო სადგურს, რბილად რომ ვთქვათ, ცოტა უცნაური (რომ აღარაფერი ვთქვათ ფინანსურ ასპექტებზე). ერთადერთი გონივრული შემთხვევაა, როდესაც ჩვენი ორპროცესორიანი Xeon სისტემა იმოქმედებს როგორც სერვერი (ზოგიერთ მშენებელს მაინც არ უყოყმანობს სერვერების გამოშვება სამუშაო სადგურის Xeon პროცესორებზე). მაგრამ ორმაგი სამუშაო სადგურებისთვის შესაბამისი ოპერაციული სისტემებით, Hyper-Threading-ის გამოყენებადობა კითხვის ნიშნის ქვეშ რჩება. Intel ახლა აქტიურად უჭერს მხარს OS-ის ლიცენზირებას არა ლოგიკური, არამედ ფიზიკური CPU-ების რაოდენობის მიხედვით. დისკუსიები ჯერ კიდევ გრძელდება და, ზოგადად, ბევრი რამ არის დამოკიდებული იმაზე, ვხედავთ თუ არა სამუშაო სადგურის OS-ს ოთხი პროცესორის მხარდაჭერით.

ისე, სერვერებთან, ყველაფერი საკმაოდ მარტივად გამოდის. მაგალითად, Windows 2000 Advanced სერვერი, რომელიც დაინსტალირებულია ორ სოკეტიან Xeon სისტემაზე, ჩართულია Hyper-Threading, დაინახავს ოთხ ლოგიკურ პროცესორს და შეუფერხებლად იმუშავებს მასზე. იმის შესაფასებლად, თუ რა მოაქვს Hyper-Threading სერვერის სისტემებს, წარმოგიდგენთ Intel Microprocessor Software Labs-ის შედეგებს ორპროცესორული სისტემებისთვის Xeon MP-ზე და რამდენიმე Microsoft-ის სერვერის აპლიკაციებზე.

ორპროცესორიანი სერვერისთვის „უფასოდ“ მუშაობის 20-30%-ით გაზრდა უფრო მაცდურია (განსაკუთრებით „ნამდვილი“ 4-პროცესორიანი სისტემის ყიდვასთან შედარებით).

ასე რომ, გამოდის, რომ ამ დროისთვის Hyper-Threading-ის პრაქტიკული გამოყენება შესაძლებელია მხოლოდ სერვერებზე. სამუშაო სადგურებთან დაკავშირებული პრობლემა დამოკიდებულია OS ლიცენზირების გადაწყვეტაზე. მიუხედავად იმისა, რომ Hyper-Threading-ის კიდევ ერთი აპლიკაცია საკმაოდ რეალურია - თუ დესკტოპის პროცესორები ამ ტექნოლოგიის მხარდაჭერას მიიღებენ. მაგალითად (წარმოვიდგინოთ) რისი ბრალია სისტემა Pentium 4 Hyper-Threading მხარდაჭერით, რომელზედაც დაინსტალირებულია Windows 2000/XP Professional SMP მხარდაჭერით? - სერვერებიდან დესკტოპ და მობილურ სისტემებამდე.