Memory hierarchy: Difference between revisions

Content deleted Content added
No edit summary
No edit summary
Line 16:
Modern [[programming language]]s mainly assume two levels of memory, main memory and disk storage, though directly accessing registers is allowable in rare cases. Programmers are responsible for moving data between disk and memory through file I/O. Hardware is in charge of moving data between memory and caches. Compilers are trying to optimize the usage of caches and registers.
 
==See also==(ALL)
(Made by Aexander Janiashvili)
მიკროპროცესორები დღეს - და განვითარების პრიორიტეტები!
 
შესავალი
 
დღეისათვის ადამიანის ცხოვრებაში დიდ როლს თამაშობს კომპიუტერი, ანუ ელექტრო გამომთვლელი მანქანა. ე.გ.მ სულ უფრო დიდ გამოყენებას პოულობს ადამიანის საქმიანობაში: სამეცნიერო-ტექნიკური გამოთვლები, რომელთაც საფუძვლად უდევს მათემატიკური მეთოდები; ტექნიკური პროცექტების დაგეგმარების ავტომატიზაცია; ეკონომიურ-სტატისტიკური ანალიზი. ასევე აღსანიშნავია კომპიუტერის მოხმარების ახალი კონცეპცია - „ციფრული სახლი“, რომელიც მოიცავს მართვის მრავალ ავტომატიზირებულ-ცენტრალიზებულ ფუნქციას: დაცვით სისტემებს, სატელევიზიო მაუწყებლობას, კონდიცირების კონტროლს და სხვა მრავალ ფუნქციას.
ე.გ.მ-მა თავისი ევოლუციის მანძილზე დიდი ცვლილებები განიცადა, კერძოდ, 50იან წლებში ისინი აგებული იყვნენ ელექტრულ ლამფებზე ანუ ელექტრულ-ვაკუუმურ ტრიოდებზე. 60იან წლებში შეიქმნა ე.გ.მ-ები სადაც ლამფების ნაცვლად ტრანზისტორები გამოიყენებოდა, რის შედეგად შემცირდა კომპიუტერის გაბარიტები და შეიქმნა მინი-ე.გ.მ-ები. შეიქმნა მცირე და საშუალო დონის ინტეგრაციის მიკროსქემები (იმს). ის წარმოადგენს ერთიან კრისტალს, რომელიც შედგება ათასობით ტრანზისტორისაგან, დიოდისაგან, წინაღობასგან, კონდენსატორისა და სხვა. ასევე შეიქმნა დიდი ინტეგრალური მიკროსქემა (დის), რომელიც ზომით ძალიან პატარაა (მაგ. 802მმ 100-200 მლნ. ტრანზისტორი), მასში თავმოყრილია დიდი მათემატიკურ-პროგრამული ფუნქციების შესაძლებლობები. ამ დის-ს წარმოადგენს მიკროპროცესორი.
როგორც ყველასათვის ცნობილია მიკროპროცესორი (ხშირად უწოდებენ - პროცესორს, ან CPU – Central Processing Unit) წარმოადგენს კომპიუტერის მთავარ ნაწილს. ის არის პროგრამულად მართვადი მოწყობილობა, რომელშიც ხდება ციფრული ინფორმაციის დამუშავება და ამ პროცესის მართვა.
პროგრამა წარმოადგენს ბრძანებათა ერთობლიობას, რომელიც ინახება მეხსიერებაში (ძირითადად ინახება პროცესორის კრისტალში ინტეგრირებულ მეხსიერებაში, რომელსაც ხშირად კეშ-მეხსიერებას (Cache Memory) უწოდებენ). CPU შიფრავს ამ ბრძანებებს და ასრულებს. ასევე პროგრამა შეიცავს მონაცემებს, რომლებზეც სრულდება გამოთვლები.
2000 წელს კომპანია IBM-მა წარმოადგინა პირველი ორბირთვიანი (ორკრისტალიანი) პროცესორი POWER4, რომელიც მუშაობდა Apple Macintosh G4 სისტემებში. ორბირთვიანი წარმოადგენს ერთ პლატაზე (ე.წ. პაკეტზე) არსებულ ორ ფიზიკურ პროცესორს, ანუ ორ დის-ს, რომლებიც ერთმანეთთან არიან შეკავშირებული მაღალი სიჩქარის მქონე სალტეებით. ასევე ორბირთვიანი მიკროპროცესორები შეიქმნა უფრო გავრცელებული ე.წ. IBM-თავსებადი (x86-ის არქიტექტურის) კომპიუტერული სისტემებისათვისაც. ამავე სისტემებს მიეკუთვნებიან ცნობილი მარკის პროცესორები Intel: Celeron, Pentium II, III, 4, M; AMD: Opteron, Athlon და სხვა. სანამ განვიხილავდეთ ორბირთვიანი პროცესორების თვისებებს და მათი შეფასების კრიტერიუმებს, გავეცნოთ ძირითადი ელემენტების მუშაობის პრინციპებს.
 
CPU-ს ძირითადი შემადგენელი ნაწილები
________________________________
 
 
• FPU (Floating Point Unit) – არის მათემატიკური თანაპროცესორი. ის მუშაობს მცურავი წერტილის პრინციპზე (IEEE-754 Floating-Point Conversion სტანდარტი). ამ უკანასკნელის გამოყენება რამდენიმეჯერ ასწრაფებს მათემატიკურ გამოთვლებს, რომელთაც მოეთხოვებათ არა სიზუსტე, არამედ სისწრაფე. Floating Point-ის მოვალეობაა რიცხვებზე ოპერირება - მოხდეს რიცხვების გადაყვანა ერთი თვლის სისტემიდან მეორეში. მისი გამოთვლების მაგალითი შეგიძლიათ იხილოთ ელ-მისამართზე http://babbage.cs.qc.edu/courses/cs341/IEEE-754.html .
აღნიშნულ მათემატიკურ თანაპროცესორს აქვს დამატებითი ე.წ. გაფართოვებები MMX, SSE, SSE2, SSE3, 3Dnow! და სხვა. მაგ. MMX შეიცავს 57 (FPU-თვის დამატებით ფუნქციონალურ) ბრძანებას (ოპერერაბდას) და რვა 64-ბიტიან რეგისტრს. საქმე იმაშია რომ MMX იყენებს FPU-ს რეგისტრებს, ანუ FPU-გან განუყოფელია, რაც პროცესორის არქიტექტურას არ ართულებს. რა თქმა უნდა მათემატიკური თანაპროცესორი კონვეერიზებულია, ანუ მასში ხდება დამუშავების რამდენიმე ეტაპი (ხშირად მეტი კონვეერი აქვს ვიდრე ალმ-ს). მაგალითად: AMD64 K8 თაობის პროცესორების FPU არის 17 კონვეერიანი. Intel Pentium 4 Willamatte-ს FPU არის 20 ეტაპიანი.
მარტივად რომ ვთქვათ FPU (და მისი გაფართოვებები) რამოდენიმეჯერ ასწრაფებს მაგალითად ხმის და გამოსახულების დამუშავებას, რაც მულტიმედიისათვისაა აუცილებელი.
 
• ALU - არითმეტიკურ ლოგიკური მთვლელი (ალმ), არის მიკროპროცესორის ძირითადი გამომთვლელი. ალმ-ს აქვს ერთი გამომტანი პორტი და რამოდენიმე შემთანი პორტი (დამოკიდებულია CPU-ს არქიტექტურაზე). ის ასრულებს არითმეტიკულ (0+1+0..) და ლოგიკურ გამოთვლებს (და, არა, ან...). როგორც ჩანს დიაგრამაზე ALU-ს ზედა პორტიდან ხდება ინსტრუქციების ნაკადების და მონაცემების ნაკადების შესვლა ხოლო ქვედა პორტიდან კი შედეგების ნაკადების გამოსვლა. იმისათვის რომ უფრო ღრმად ჩავწვდეთ ზემოთ თქმულს განვიხილოთ შემდეგი მაგალითი.
 
 
 
 
 
მაგალითიდან ნათლად ჩანს, რომ თეთრი უჯრებში არის მონაცემების ნაკადები რომლებიც შეიცავენ სხვადასხვა რიცხვებს ამ ნაკადებს უწოდებენ ოპერანდებს (ობიექტები რომლებზეც სრულდება ოპერაცია) ხოლო შავი უჯრა არის ინსტრუქციის (ბრძანების) ნაკადი ეგრეთ წოდებული ოპერატორი. ოპერატორებია (+, -, /, >, <, და ა.შ.). შესაბამისად ნაცრისფერი კუბიკი არის მიღებული შედეგი. ეს შედეგი შეიძლება იყოს პიქსელის მდებარეობის კორდინატები რომლებიც ქმნიან რენდერის სცენას თამაშში, ან თუნდაც ექსელში ფორმულის მიცემის შედეგად მიღებული რიცხვი. ხშირად მიკროპროცესორებს განკარგულებაში სამი ალმ გააჩნიათ.
 
• აკუმულატორი - არის რეგისტრი რომელშიც დროებით ინახება არითმეტიკულ-ლოგიკური რეზულტატები. მაშინ როცა ALU გამოთვლას ატარებს ვთქვათ I "სიტყვაზე" (32 ბიტიანი), ხოლო ამ დროს II "სიტყვა" აკუმულატორში "ელოდება" მოქმედებას. რეგისტრის გარეშე (როგორიცაა აკუმულატორი) დროებით შესანახი სიტყვა გაეგზავნებოდა უფრო ნელ ოპერატიულ მეხსიერებას, რითაც მთელი პროცესორის წარმადობა დაეცემოდა.
2. ბრძანებათა მთვლელი - აკონტროლებს ყველა ბრძანებას (და მიმდევრობას) რომელიც მიმართულია შიგასალტედან დამუშავებაზე.
3. მეხსიერების მისამართის რეგისტრი - ის უთითებს მეხსიერების (კეშში) იმ უჯრედს რომელიც პროცესორმა უნდა გამოიყენოს - ამ რეგისტრიდან გამომავალი შინა არის -სამისამართი შინა!
4. ბრძანებების რეგისტრი - ამის დანიშნულებაა ის რომ მიმდინარე შესასრულებელი ბრძანება შეინახოს.
5. მდგომარეობის რეგისტრი - ეს რეგისტრი იმისთვისაა რო პროგრამის შესრულების დროს შემოწმებები ჩაატაროს და შედეგები შეინახოს (ერთერთი ყველაზე რთული აგებულების რეგისტრი).
6. ALU-ს საბუFერო რეგისტრი - ესეც დამმახსოვრებელი მოწყობილობის როლს ასრულებს (ინახავს მარტო ერთ სიტყვას 32/64bit).
7. თანამედრივე პროცებში არის ასევე ზოგადი დანიშნულების რეგისტრები, რომლებიც იმეორებენ ერთ-ერთი სხვა რეგ-ის ფუნქციას!
რეგ-ები მორჩა :D!
 
-ასევე პროცში არის მართვის სქემები, რომლებიც მართავენ (ზნაჩიტ ბრძანებათა/მონაცემთა მიმდევრობითობას აკონტროლებენ) რეგისტრების მთელ "მეურნეობაში".
-და ბოლოს -მონაცემთა შ/სალტე. ის აკავშირებს ALU, FPU-ს და რეგ-ებს ერთმანეთთან მართვის სქემებიდან ბრძანების მიღების მერე. გავაიასნებ - ზუსტად ამ შიდა სალტეზეა საუბარი როცა იძახიან "პროცესორი 2.4გჰც-ზე მუშაობს"ო!!!
 
 
 
* [[Virtual memory]]