310 likes | 704 Views
سازماندهي حافظه. سازماندهي حافظه . سلسله مراتب حافظه حافظة اصلي حافظة جانبي حافظة انجمني حافظة نهان حافظة مجازي سخت افزار مديريت حافظه. سلسله مراتب حافظه. سلسله مراتب حافظه به خاطر سرعت بخشيدن دسترسي به حافظه با حداقل هزينه بوجود آمده است.
E N D
سازماندهي حافظه سلسله مراتب حافظه حافظة اصلي حافظة جانبي حافظة انجمني حافظة نهان حافظة مجازي سخت افزار مديريت حافظه
سلسله مراتب حافظه سلسله مراتب حافظه به خاطر سرعت بخشيدن دسترسي به حافظه با حداقل هزينه بوجود آمده است. در سلسله مراتب حافظه هرم(كه قاعدة آن در پائين است) اگر از پائين به بالا حركت كنيم: سرعت دسترسي به حافظه بيشتر ميشود. هزينه سختافزار افزايش پيدا ميكند. حجم حافظه كاهش پيدا ميكند.
Auxiliary memory Magnetic I/O Main tapes سلسله مراتب حافظه memory processor Magnetic disks Cache CPU memory Register سلسله مراتب حافظه Cache Main Memory Magnetic Disk Magnetic Tape
حافظة اصلي Chip select 1 CS1 Chip select 2 CS2 128 x 8 Read RD 8-bit data bus RAM Write WR 7-bit address AD 7 حافظه هاي RAMوROM نمونه اي از يك حافظةRAM Memory function State of data bus CS1 CS2 RD WR Inhibit High-impedence 0 0 x x Inhibit High-impedence 0 1 x x Inhibit High-impedence 1 0 0 0 Write Input data to RAM 1 0 0 1 Output data from RAM Read 1 0 1 x Inhibit High-impedence 1 1 x x
ROM CS1 Chip select 1 CS2 Chip select 2 512 x 8 8-bit data bus ROM نمونهاي از يك حافظةROM 9-bit address AD 9
Address bus Hexa address Component 10 9 8 7 6 5 4 3 2 1 RAM 1 RAM 2 RAM 3 RAM 4 ROM 0000 - 007F 0080 - 00FF 0100 - 017F 0180 - 01FF 0200 - 03FF 0 0 0 x x x x x x x 0 0 1 x x x x x x x 0 1 0 x x x x x x x 0 1 1 x x x x x x x 1 x x x x x x x x x نگاشت آدرس حافظه نگاشت آدرس به يك تراشة حافظه. مثال: نگاشت 512بايتRAMو 512بايت ROM.
نگاشت آدرس حافظه اتصال حافظه به CPU. تراشههاي RAMوROMاز طريق گذرگاه داده و آدرس به CPUمتصل مي شوند. بيتهاي كمارزش تر در خطوط آدرس بايت هاي درون يك تراشة حافظة وبيت هاي با ارزش بيشتريك تراشه از چندين تراشة حافظه را انتخاب مي كنند.
CPU Address bus 16-11 10 9 8 7-1 RD WR Data bus Decoder اتصال حافظه به CPU 3 2 1 0 CS1 CS2 128 x 8 Data RD RAM 1 WR AD7 CS1 CS2 128 x 8 Data RD RAM 2 WR AD7 CS1 CS2 128 x 8 Data RD RAM 3 WR AD7 CS1 CS2 128 x 8 Data RD RAM 4 WR AD7 CS1 CS2 1- 7 512 x 8 Data 8 ROM AD9
Associative Memory(حافظة انجمني)(حافظه تداعيگر) Argument register(A) Key register (K) دسترسي به اين گونه حافظه ها بر اساس محتواي داده صورت ميگيرد نه آدرس آن. اين گونه حافظه ها به حافظههاي قابل آدرسدهي با(CAM) محتوا هم ناميده مي شوند. سازماندهي سختافزاري Match register Input Associative memory array and logic M Read m words Write n bits per word
حافظة انجمني Associative Memory عملكرد حافظة انجمني نام ديگر : CAM(Content Addressable Memory ) هركلمه در حافظه به طور موازي با محتويات ثبات A(Argument Register)مقايسه ميشود. اگر درحافظه،word[i]=A آنگاه M[i]=1. تمام كلماتي كه در CAMمقدارM[i]=1 آنبه صورت ترتيبي از حافظه خوانده ميشود. از ثبات Kبراي ماسك كردن يك فيلد و يا كليد در ثبات Aاستفاده مي شود(تنها بيتهاي از ثباتAكه داراي يك 1در بيت متناظر در ثبات Kباشند مورد مقايسه قرار ميگيرند).
سازماندهي CAM Aj A1 An Kj K1 Kn سازماندهي داخليCAM C1j C1n M1 C11 Word 1 Cij Cin Word i Ci1 Mi Cmj Cmn Word m Cm1 Mm Bit j Bit n Bit 1
سازماندهي CAM Aj Kj Input Write سازماندهي داخلي يك سلول(Cij)در CAM. R S Match To M F ij i logic Read
Match Logic • Match Logic : Fig. 12-9 • Aj = Argument, Fij = Cell ij • xj = Aj Fij (1 AND 1)+ Aj’ Fij’ (0 AND 0) • n bits match :Mi = x1x2…..xn • Key bit Kj : xj + Kj’ • Kj = 0: Aj andFijno comparison ( Kj : xj + 1 = 1 ) • Kj = 1: Ajand Fijcomparison ( Kj : xj + 0 = xj ) • Match Logic for word I : Mi = (x1 + K1’) (x2 + K2’)…. (xn + Kn’)
مدار انطباق K A K A K A 1 1 2 2 n n F' F F' F F . . . . F' i1 in in i1 i2 i2 سازماندهي داخلي مدار انطباق(match logic). M i
حافظة نهان اصل مراجعات محلي به حافظه طبق اين اصل دسترسي به حافظه در بازه هاي زماني معين تمايل دارد كه به سلولهاي مجاور حافظه باشد. اين نواحي حافظه را به زير مجموعه ايي تقسيم مي كند كه در طول زمان اين زير مجموعهها با زير مجموعه هاي جديد عوض مي شوند. محلي بودن موقت:طبق اين اصل اطلاعاتي كه در آيندة نزديك مورد استفاده قرار ميگيرند،احتمالاً هم اكنون مورد استفاده قرار گرفته اند. محلي بودن فيزيكي:طبق اين اصل اگر يك كلمه مورد دستيابي قرار گرفت،كلمه هاي مجاور با اين كلمه در آيندة نزديك مورد دستيابي قرار ميگيرند(به عنوان مثال داده هاي مربوط به هم در يك آرايه پشتسرهم ذخيره ميشوند،ويا دستورات در يك برنامه به ترتيب و اغلب پشت سرهم اجرا ميشوند.).
حافظة نهان حافظةنهان اصل محلي بودن مراجعات علت كاركرد حافظة نهان ميباشند. حافظههاي نهان ،حافظههاي سريع و كم حجمي هستند كه اطلاعاتي را كه احتمال دارد به زودي مورد دستيابي قرار گيرند را در خود ذخيره مي كنند. Main memory CPU Cache memory
كارائي حافظة نهان ترتيب دسترسي حافظه تمام دسترسيها به حافظه ابتدا به سمت حافظة نهان هدايت ميشوند. اگر كلمة مورد نظر در حافظة نهان بود،حافظة نهان مورد دستيابي قرار ميگيرد. اگر كلمة مورد نظر در حافظة نهان نبود بلوك و يا خطي كه كلمة مورد نظر را در بر دارد از حافظة اصلي جايگزين يك بلوك در حافظة نهان ميشود.
كارائي حافظة نهان كارائي سيستم حافظة پنهان Hit Rate :درصدي از كل دسترسي هاي به حافظه كه از طريق حافظة نهان برآورده ميشود. Tc:زمان دسترسي به حافظة نهان. Tm:زمان دسترسي به حافظة اصلي. Te:زمان موثر دسترسي به يك كلمه از حافظه درسيستميكه ازحافظةنهاناستفادهمي كند. Te = Tc + (1 - h) Tm مثال: Tc = 0.4µs, Tm = 1.2µs, h = 0.85% Te = 0.4 + (1 - 0.85) * 1.2 = 0.58µs
نگاشت حافظة اصلي و نهان انتقال داده ها از حافظة اصلي به حافظة نهان فرايند نگاشت ناميده ميشود. انواع نگاشت: نگاشت انجمني.(تداعيگر) نگاشت مستقيم. نگاشت انجمني مجموعهاي.
نگاشت حافظة اصلي و نهان (نگاشت انجمني) address (15 bits) Argument register نگاشت انجمني هر بلوك از حافظة نهان ميتواند هر بلوك از حافظة اصلي را ذخيره كند(قابليت انعطاف). جدول نگاشت در حافظة انجمني پياده سازي ميشود(سريع و گران). جدول نگاشت ،هم آدرس كلمة حافظه و هم محتويات آن را ذخيره ميكند. Address Data 0 1 0 0 0 3 4 5 0 CAM 0 2 7 7 7 6 7 1 0 2 2 2 3 5 1 2 3 4
نگاشت حافظة اصلي و نهان (نگاشت مستقيم) هر بلوك حافظه تنها در يك مكان از حافظة نهان ميتواند ذخيره شود. جدول نگاشت از حافظةRAMساخته ميشودبجاي حافظة انجمني. يك آدرسn-بيتي حافظةاصلي به دو قسمت زير تقسيم ميشوند. kبيت براي INDEX. n-kبيت براي TAG. از آدرس n-بيتي براي دسترسي به حافظة اصلي و از k-بيت براي دسترسي به حافظة نهان استفاده ميشود. روابط بين آدرس ها Tag(6) Index(9) 00 000 32K x 12 000 512 x 12 Main memory Cache memory Address = 15 bits Address = 9 bits Data = 12 bits Data = 12 bits 777 77 777
نگاشت حافظة اصلي و نهان (نگاشت مستقيم) Memory Memory data address Cache memory 00000 1 2 2 0 Index Tag Data address 0 0 1 2 2 0 00777 2 3 4 0 000 01000 3 4 5 0 سازماندهي حافظة نهان با نگاشت مستيم: 01777 4 5 6 0 02000 5 6 7 0 0 2 6 7 1 0 777 02777 6 7 1 0
نگاشت حافظة اصلي و نهان (نگاشت مستقيم) عملكرد نگاشت مستقيم: cpuيك درخواست حافظه بصورت( TAG;INDEX) توليد ميكند. از طريق INDEXبه حافظة نهان دسترسي پيدا ميكند،يعني به(tag;data)و TAGرا باtagمقايسه ميكند. اگرTAG=tagپس يك اصابت رخداده است.بنابراين داده ها را از حافظة نهان بازيابي مي كند و به CPUبر ميگرداند. اگرTAG<>tagپس يك عدم اصابت رخداده و بنابر اين عمليات زير را به ترتيب انجام مي دهد(M:حافظة اصلي،Cache:حافظة نهان): داده ها را ار حافظة پنهان از بلوك مربوطه بر روي حافظه رم انتقالميدهد. حافظة پنهان را با داده هاي جديد به روز ميكند. داده ها را از روي حافظة اصلي به cpuارسال مي كند
Index Tag Data Tag Data 000 0 1 3 4 5 0 0 2 5 6 7 0 777 0 2 6 7 1 0 0 0 2 3 4 0 نگاشت حافظة اصلي و نهان (نگاشت انجمني مجموعهاي) هر كلمهاي در حافظة اصلي داراي مجموعهاي از مكانها در حافظة نهان است كه مي تواند در آنها بار شود. مقايسه نشانه ها بصورت انجمنی صورت می گيرد نگاشت انجمني مجموعهاي با مجموعه هايي با اندازة 2:
نگاشت حافظة اصلي و نهان (نگاشت انجمني مجموعهاي) عملكرد نگاشت انجمني مجموعهاي: يك درخواست حافظه بصورت( TAG;INDEX) توليد ميكند. با استفاده از INDEXبه حافظة نهان دسترسي پيدا ميكند.يعني به(كلمه هاي حافظة پنهان(tag0,data0)و(tag1,data1)). به ترتيب TAGرا با tag0وtag1مقايسه مي كند. if tag i=TAG ->Hit, CPU<-data i . if tag i <>TAG->Miss. يكي از دو كلمة (tag 0,data 0)و(tag 1,data 1)را جايگزين مي كند(در اينجا فرض مي كنيم(tag0,data0)را جايگزين كنيم)و سپس عمليات زير را به ترتيب انجام مي دهيم: M[tag 0, INDEX] <- Cache[INDEX](data 0) Cache[INDEX](tag 0, data 0) <- (TAG, M[TAG,INDEX]), CPU <- Cache[INDEX](data 0)