ابتدا خلاصه ای را میگوییم در این باره
Memory hierarchy in computer systems is a structured arrangement of different types of memory, organized based on speed, cost, and size. The hierarchy ensures that the most frequently accessed data is available at the fastest speeds, while less frequently used data is stored in slower, larger, and more cost-effective storage. This organization helps to balance performance and cost efficiency.
Levels of Memory Hierarchy
- Registers
- Cache Memory
- Main Memory (RAM)
- Secondary Storage (Hard Drives, SSDs)
- Tertiary Storage (Optical Disks, Magnetic Tapes)
1. Registers
- Location: Inside the CPU
- Speed: Fastest (nanoseconds)
- Size: Smallest (usually 32 or 64 bits per register, with a limited number of registers)
- Cost: Highest per bit
- Function: Hold data that the CPU is currently processing. Operations are performed directly on data stored in registers.
Example (MIPS Assembly):
add $t1, $t2, $t3 # Adds the values in registers $t2 and $t3, stores the result in $t1
2. Cache Memory
- Location: Between the CPU and main memory
- Speed: Very fast (nanoseconds)
- Size: Small (KB to MB range)
- Cost: High per bit
- Function: Stores copies of frequently accessed data from main memory to reduce access time. Typically divided into levels:
- L1 Cache: Smallest and fastest, located inside the CPU.
- L2 Cache: Larger than L1, may be inside the CPU or on a separate chip.
- L3 Cache: Even larger, shared among multiple CPU cores.
Example (Cache Hit/Miss):
- Cache Hit: CPU requests data, finds it in the cache, reads it quickly.
- Cache Miss: CPU requests data, not in the cache, must fetch from main memory, slower.
3. Main Memory (RAM)
- Location: On the motherboard
- Speed: Fast (nanoseconds)
- Size: Moderate (GB range)
- Cost: Moderate per bit
- Function: Holds the data and instructions that the CPU needs while executing programs. Volatile memory, meaning data is lost when power is off.
Example (Memory Access):
lw $t0, 0($a0) # Load the word at the address in $a0 into register $t0
sw $t0, 4($a0) # Store the word from register $t0 into memory at the address in $a0 + 4
4. Secondary Storage
- Types: Hard Disk Drives (HDD), Solid State Drives (SSD)
- Location: Connected via motherboard interfaces (e.g., SATA, NVMe)
- Speed: Slower (milliseconds for HDDs, microseconds for SSDs)
- Size: Large (GB to TB range)
- Cost: Lower per bit
- Function: Non-volatile storage used to hold data long-term. Programs and files are stored here and loaded into main memory when needed.
5. Tertiary Storage
- Types: Optical Disks (CDs, DVDs, Blu-rays), Magnetic Tapes
- Location: External or connected via external interfaces
- Speed: Slowest (seconds to minutes)
- Size: Very large (GB to TB range per unit)
- Cost: Lowest per bit
- Function: Used for archival and backup storage. Data is infrequently accessed and used primarily for long-term storage.
Memory Access Methods
- Random Access: Data can be read or written in any order (e.g., RAM).
- Sequential Access: Data must be accessed in a specific linear order (e.g., magnetic tapes).
Memory Management Techniques
- Caching: Storing frequently accessed data in faster storage (e.g., L1, L2, L3 caches).
- Paging: Dividing memory into fixed-size pages to manage memory more efficiently and isolate processes.
- Segmentation: Dividing memory into variable-sized segments based on logical divisions of programs.
Importance of Memory Hierarchy
The memory hierarchy is critical for achieving a balance between performance and cost. By organizing memory into a hierarchy, systems can provide the speed necessary for the CPU to operate efficiently while maintaining a cost-effective solution for storing large amounts of data. The hierarchy ensures that the most frequently accessed data is available at the fastest speeds, improving overall system performance.
Conclusion
Understanding memory hierarchy is essential for designing efficient computer systems. By leveraging the different levels of memory, systems can achieve high performance without excessive costs. This organization allows for optimal data access times and efficient use of storage resources, making it a cornerstone of modern computer architecture.
به زبان فارسی :
مبحث سلسله مراتب حافظه در سیستمهای کامپیوتری، یک ساختار سازمانیافته از انواع مختلف حافظه است که بر اساس سرعت، هزینه و اندازه مرتب شدهاند. این سلسله مراتب اطمینان میدهد که دادههایی که بیشتر مورد استفاده قرار میگیرند، با سریعترین سرعت در دسترس هستند، در حالی که دادههایی که کمتر مورد استفاده قرار میگیرند، در حافظههایی با سرعت کمتر، بزرگتر و با هزینه کمتر ذخیره میشوند. این سازماندهی کمک میکند تا تعادلی بین عملکرد و هزینه به دست آید.
سطوح سلسله مراتب حافظه
- ثباتها (Registers)
- حافظه نهان (Cache)
- حافظه اصلی (RAM)
- حافظه ثانویه (هارد دیسکها، SSDها)
- حافظه ثالثیه (دیسکهای نوری، نوارهای مغناطیسی)
1. ثباتها (Registers)
- محل: داخل CPU
- سرعت: سریعترین (نانوثانیه)
- اندازه: کوچکترین (معمولاً ۳۲ یا ۶۴ بیت در هر ثبات، با تعداد محدودی ثبات)
- هزینه: بالاترین به ازای هر بیت
- کارکرد: نگهداری دادههایی که CPU در حال پردازش آنها است. عملیات به صورت مستقیم بر روی دادههای ذخیره شده در ثباتها انجام میشود.
مثال (اسمبلی MIPS):
add $t1, $t2, $t3 # افزودن مقادیر در ثباتهای $t2 و $t3، ذخیره نتیجه در $t1
2. حافظه نهان (Cache)
- محل: بین CPU و حافظه اصلی
- سرعت: بسیار سریع (نانوثانیه)
- اندازه: کوچک (محدوده KB تا MB)
- هزینه: بالا به ازای هر بیت
- کارکرد: ذخیره کپی دادههای پرکاربرد از حافظه اصلی برای کاهش زمان دسترسی. معمولاً به سطوح تقسیم میشود:
- نهان L1: کوچکترین و سریعترین، داخل CPU قرار دارد.
- نهان L2: بزرگتر از L1، ممکن است داخل CPU یا روی چیپ جداگانه باشد.
- نهان L3: بزرگتر، بین هستههای مختلف CPU به اشتراک گذاشته میشود.
مثال (برخورد/عدم برخورد نهان):
- برخورد نهان: CPU درخواست داده میکند، آن را در نهان مییابد و سریع میخواند.
- عدم برخورد نهان: CPU درخواست داده میکند، در نهان یافت نمیشود و باید از حافظه اصلی بگیرد که کندتر است.
3. حافظه اصلی (RAM)
- محل: روی مادربورد
- سرعت: سریع (نانوثانیه)
- اندازه: متوسط (محدوده GB)
- هزینه: متوسط به ازای هر بیت
- کارکرد: نگهداری دادهها و دستورات مورد نیاز CPU در حین اجرای برنامهها. حافظه فرار است، یعنی دادهها با قطع برق از بین میروند.
مثال (دسترسی به حافظه):
lw $t0, 0($a0) # خواندن کلمه از آدرس موجود در $a0 به ثبات $t0
sw $t0, 4($a0) # ذخیره کلمه از ثبات $t0 در حافظه در آدرس $a0 + 4
4. حافظه ثانویه
- انواع: هارد دیسکها (HDD)، درایوهای حالت جامد (SSD)
- محل: متصل به مادربورد از طریق رابطهای مختلف (مانند SATA، NVMe)
- سرعت: کندتر (میلیثانیه برای HDDها، میکروثانیه برای SSDها)
- اندازه: بزرگ (محدوده GB تا TB)
- هزینه: کمتر به ازای هر بیت
- کارکرد: حافظه غیر فرار برای نگهداری بلندمدت دادهها. برنامهها و فایلها در اینجا ذخیره میشوند و در صورت نیاز به حافظه اصلی بارگذاری میشوند.
5. حافظه ثالثیه
- انواع: دیسکهای نوری (CDها، DVDها، Blu-rayها)، نوارهای مغناطیسی
- محل: خارجی یا متصل از طریق رابطهای خارجی
- سرعت: کندترین (ثانیه تا دقیقه)
- اندازه: بسیار بزرگ (محدوده GB تا TB برای هر واحد)
- هزینه: پایینترین به ازای هر بیت
- کارکرد: برای بایگانی و پشتیبانگیری استفاده میشود. دادهها به ندرت دسترسی میشوند و عمدتاً برای نگهداری بلندمدت استفاده میشوند.
روشهای دسترسی به حافظه
- دسترسی تصادفی: دادهها میتوانند به هر ترتیبی خوانده یا نوشته شوند (مانند RAM).
- دسترسی ترتیبی: دادهها باید به ترتیب خاصی دسترسی شوند (مانند نوارهای مغناطیسی).
تکنیکهای مدیریت حافظه
- نهانسازی: ذخیره دادههای پرکاربرد در حافظه سریعتر (مانند نهان L1، L2، L3).
- صفحهبندی: تقسیم حافظه به صفحات با اندازه ثابت برای مدیریت کارآمدتر حافظه و جداسازی فرآیندها.
- تقسیمبندی: تقسیم حافظه به بخشهایی با اندازه متغیر بر اساس تقسیمات منطقی برنامهها.
اهمیت سلسله مراتب حافظه
سلسله مراتب حافظه برای دستیابی به تعادلی بین عملکرد و هزینه بسیار مهم است. با سازماندهی حافظه به یک سلسله مراتب، سیستمها میتوانند سرعت لازم برای عملکرد کارآمد CPU را فراهم کنند در حالی که راهحلهای مقرونبهصرفهای برای ذخیرهسازی حجم زیادی از دادهها ارائه میدهند. این سلسله مراتب اطمینان میدهد که دادههای پرکاربرد با سریعترین سرعت در دسترس هستند و عملکرد کلی سیستم را بهبود میبخشد.
نتیجهگیری
درک سلسله مراتب حافظه برای طراحی سیستمهای کامپیوتری کارآمد ضروری است. با استفاده از سطوح مختلف حافظه، سیستمها میتوانند عملکرد بالا را بدون هزینههای اضافی به دست آورند. این سازماندهی اجازه میدهد تا زمان دسترسی به دادهها بهینه شود و استفاده از منابع ذخیرهسازی به صورت کارآمد انجام شود، که این امر یک پایه اساسی در معماری مدرن کامپیوتر است.
حافظه مجازی
حافظه مجازی یک تکنیک مدیریت حافظه است که به سیستمهای کامپیوتری اجازه میدهد تا برنامههای بزرگتر از حافظه فیزیکی (RAM) را اجرا کنند. این تکنیک با استفاده از ترکیب حافظه اصلی و حافظه ثانویه (معمولاً دیسک سخت) یک فضای آدرس مجازی برای برنامهها ایجاد میکند.
مزایا و اهداف حافظه مجازی
- افزایش فضای آدرسدهی: حافظه مجازی به برنامهها اجازه میدهد تا از یک فضای آدرسدهی بزرگتر از حافظه فیزیکی استفاده کنند.
- جداسازی و حفاظت حافظه: هر فرآیند فضای آدرس مجازی خودش را دارد که از تداخل با فرآیندهای دیگر جلوگیری میکند.
- کارایی و مدیریت بهتر حافظه: استفاده بهینه از حافظه فیزیکی و کاهش زمان انتظار CPU برای دسترسی به دادهها.
نحوه کار حافظه مجازی
حافظه مجازی از واحد مدیریت حافظه (MMU) برای ترجمه آدرسهای مجازی به آدرسهای فیزیکی استفاده میکند. این فرآیند شامل دو بخش اصلی است:
- صفحهبندی (Paging)
- تقسیمبندی (Segmentation)
صفحهبندی (Paging)
صفحهبندی حافظه را به بخشهایی با اندازه ثابت به نام صفحه (Page) تقسیم میکند. هر صفحه به یک بلوک حافظه فیزیکی به نام قاب (Frame) نگاشت میشود. جدول صفحه (Page Table) این نگاشت را نگهداری میکند.
مثال ساده صفحهبندی
فرض کنید حافظه مجازی به ۴ صفحه و حافظه فیزیکی به ۴ قاب تقسیم شده است. جدول صفحه میتواند چیزی شبیه این باشد:
صفحه | قاب |
---|---|
0 | 3 |
1 | 1 |
2 | 2 |
3 | 0 |
در اینجا، صفحه ۰ در قاب ۳ و صفحه ۱ در قاب ۱ قرار دارد و غیره.
تقسیمبندی (Segmentation)
تقسیمبندی حافظه را به بخشهایی با اندازه متغیر به نام بخش (Segment) تقسیم میکند. هر بخش به یک منطقه حافظه فیزیکی نگاشت میشود. جدول بخش (Segment Table) این نگاشت را نگهداری میکند.
دسترسی به حافظه و خواندن از حافظه
دسترسی به حافظه
- آدرسدهی مستقیم: پردازنده به صورت مستقیم به حافظه فیزیکی دسترسی دارد.
- آدرسدهی غیرمستقیم: پردازنده از آدرسهای مجازی استفاده میکند که توسط MMU به آدرسهای فیزیکی ترجمه میشوند.
فرآیند دسترسی
- ترجمه آدرس: پردازنده یک آدرس مجازی تولید میکند.
- مشاوره با جدول صفحه/بخش: MMU به جدول صفحه یا بخش مراجعه میکند تا آدرس فیزیکی معادل را پیدا کند.
- دسترسی به حافظه فیزیکی: دادهها از آدرس فیزیکی بازیابی میشوند و به پردازنده ارسال میشوند.
خواندن از حافظه
فرآیند خواندن داده از حافظه شامل مراحل زیر است:
- تولید آدرس مجازی: پردازنده آدرس مجازی را تولید میکند.
- ترجمه آدرس مجازی به آدرس فیزیکی: MMU آدرس مجازی را به آدرس فیزیکی ترجمه میکند.
- دسترسی به حافظه فیزیکی: دادهها از حافظه فیزیکی خوانده میشوند و به پردازنده ارسال میشوند.
مثال در اسمبلی MIPS
فرض کنید آدرس مجازی 0x00400000
به آدرس فیزیکی 0x00001000
نگاشت شده است:
lw $t0, 0x00400000 # Load word from virtual address 0x00400000
این دستور، واحد MMU را فعال میکند تا آدرس مجازی 0x00400000
را به آدرس فیزیکی 0x00001000
ترجمه کند. سپس مقدار موجود در آدرس فیزیکی 0x00001000
به ثبات $t0
بارگذاری میشود.
مدیریت خطاهای صفحه (Page Fault)
اگر داده مورد نظر در حافظه اصلی موجود نباشد، خطای صفحه رخ میدهد. سیستمعامل باید:
- شناسایی خطای صفحه: مشخص کند که کدام صفحه نیاز به بارگذاری دارد.
- بارگذاری صفحه از دیسک: صفحه مورد نظر را از دیسک به حافظه اصلی بارگذاری کند.
- بهروزرسانی جدول صفحه: جدول صفحه را بهروزرسانی کند تا نشان دهد که صفحه در حافظه اصلی موجود است.
- ادامه اجرای برنامه: پردازنده را برای ادامه اجرای برنامه آماده کند.
میبینیم که هر دو در این ها دارای فضاهایی پیج هستند
این گونه تعرجمه میشود
we have Page Table in this :
این مکان حافظه ی مارا در مموری به ما میگوید . که در کدام بخش از مموری سیو شده است
بعد از ان هم ما باید به ان مموری دسترسی داشته باشیم و اگر ادرس ان پیج در مموری نباشد به مشکل خورده ایم
Page Table
A page table is a crucial data structure used in the memory management of operating systems to translate virtual addresses to physical addresses in a system that uses virtual memory. This translation allows processes to use virtual addresses without worrying about the actual physical memory layout.
Purpose of the Page Table
The primary purpose of the page table is to:
- Translate Virtual Addresses to Physical Addresses: When a process accesses memory, it uses virtual addresses, which the page table translates to the corresponding physical addresses.
- Manage Memory Protection: The page table can implement protection mechanisms to control access to memory regions, preventing processes from accessing each other’s memory.
- Support Memory Paging: It enables the efficient use of memory by loading only the required pages into physical memory and managing the swapping of pages between RAM and secondary storage.
Structure of the Page Table
A page table typically contains several entries, each representing a mapping from a virtual page to a physical frame. Each entry in the page table might include:
- Page Frame Number (PFN): The address of the corresponding physical frame.
- Present/Absent Bit: Indicates whether the page is currently in physical memory.
- Access Control Bits: Control permissions such as read, write, or execute access.
- Dirty Bit: Indicates whether the page has been modified since it was loaded into memory.
- Reference Bit: Used for page replacement algorithms to track page usage.
Example
Let’s consider a simple example with a hypothetical system:
- Virtual address space: 32 bits
- Page size: 4 KB (2^12 bytes)
- Number of pages: 2^20 (since 32 – 12 = 20)
- Number of frames in physical memory: 2^18 (256 KB)
The page table will have 2^20 entries, and each entry will map a virtual page to one of the 2^18 physical frames.
Page Table Entry (PTE) Format
A typical PTE format might look like this:
Bits | Description |
---|---|
0 | Present/Absent Bit |
1 | Read/Write Permission Bit |
2 | User/Supervisor Bit |
3-4 | Reserved (for future use) |
5 | Accessed Bit (Reference Bit) |
6 | Dirty Bit |
7-11 | Available for OS use |
12-31 | Page Frame Number (PFN) |
Translation Process
The translation of a virtual address to a physical address involves the following steps:
- Extract Page Number and Offset: Divide the virtual address into the page number and the offset within the page.
- Locate the Page Table Entry: Use the page number as an index into the page table to find the corresponding PTE.
- Check Presence: Check the Present/Absent bit to see if the page is in physical memory. If it is not present, a page fault occurs.
- Combine PFN and Offset: If the page is present, concatenate the PFN with the offset to form the physical address.
Example of Address Translation
Assume a 32-bit virtual address and a page size of 4 KB:
- Virtual address:
0x12345678
- Page size: 4 KB (2^12 bytes)
- Page number:
0x12345
(bits 12-31 of the virtual address) - Offset:
0x678
(bits 0-11 of the virtual address)
Using the page number 0x12345
, we look up the page table:
Page Number | Page Frame Number | Present Bit | … |
---|---|---|---|
… | … | … | … |
0x12345 | 0x00234 | 1 | … |
… | … | … | … |
The entry indicates the page is present and mapped to physical frame 0x00234
. The physical address is formed by combining the PFN and the offset:
- Physical address:
0x002340678
Multi-Level Page Tables
To handle larger address spaces and reduce the size of individual page tables, multi-level page tables are used. Common configurations include:
- Two-Level Page Table: The virtual address is divided into multiple parts. For example, in a two-level page table:
- First part: Index into the first-level page table.
- Second part: Index into the second-level page table.
- Third part: Offset within the page.
Example of a Two-Level Page Table
Assume a 32-bit virtual address with a 4 KB page size:
- First 10 bits: Index into the first-level page table.
- Next 10 bits: Index into the second-level page table.
- Last 12 bits: Offset within the page.
Handling Page Faults
When a page fault occurs (i.e., the page is not present in physical memory), the following steps are taken:
- Identify the Faulting Page: The MMU raises an exception, and the operating system identifies the virtual page causing the fault.
- Load the Page from Secondary Storage: The operating system loads the required page from secondary storage (e.g., disk) into physical memory.
- Update the Page Table: The page table is updated to reflect the new mapping, setting the Present bit.
- Resume Execution: The process is resumed from the point where the page fault occurred.
Conclusion
Page tables are fundamental components of virtual memory systems, enabling efficient and secure memory management. They translate virtual addresses to physical addresses, manage memory protection, and support paging and segmentation. Understanding page tables is crucial for comprehending how modern operating systems handle memory and ensure efficient utilization of system resources.
در کش باید به دنبال ادرس های فییکی هستیم که دارند
حال یک کش خاص میتوان داشت که فقط مخصوص نگهداری پیج تیبل میباشد
بخشی از پیج تیبل را باید درون خودش نگه دارد
پس باید درون خودش physical page number را داشته باشد
Translation Lookaside Buffer (TLB)
The Translation Lookaside Buffer (TLB) is a specialized cache used in computer systems to improve the speed of virtual-to-physical address translation. It is a crucial component of the memory management unit (MMU) in modern processors.
Purpose of the TLB
The primary purpose of the TLB is to:
- Speed Up Address Translation: By caching recent translations from the page table, the TLB reduces the time needed to translate virtual addresses to physical addresses.
- Reduce Memory Access Latency: By storing frequently accessed page table entries (PTEs), the TLB minimizes the need to access the slower main memory to retrieve these entries.
Structure of the TLB
The TLB is typically structured as an associative memory (often fully associative or set associative) where each entry holds a mapping of a virtual page number to a physical page number along with additional information such as access permissions and status bits.
TLB Entry Format
A typical TLB entry might include:
- Virtual Page Number (VPN): The virtual address part used for indexing.
- Physical Frame Number (PFN): The physical address part corresponding to the VPN.
- Valid Bit: Indicates whether the entry is valid.
- Access Control Bits: Permissions such as read, write, and execute.
- Dirty Bit: Indicates whether the page has been modified.
- Reference Bit: Used for TLB replacement algorithms.
How the TLB Works
When a CPU needs to access memory, it follows these steps:
- Check the TLB: The CPU checks the TLB to see if the virtual address translation is already cached.
- TLB Hit: If the translation is found in the TLB, the physical address is retrieved quickly without accessing the page table in main memory.
- TLB Miss: If the translation is not found in the TLB, the CPU must access the page table in main memory to retrieve the necessary PTE, and then update the TLB with this new translation.
Example of TLB Operation
Consider a system with the following characteristics:
- Virtual address:
0x12345678
- Page size: 4 KB (4096 bytes)
- Virtual page number (VPN): Extracted from the virtual address
- Offset: Remaining part of the virtual address
The TLB lookup process:
- Extract VPN: From
0x12345678
, assume VPN is0x12345
. - Check TLB: Search for
0x12345
in the TLB. - TLB Hit: If found, retrieve the corresponding PFN and form the physical address.
- TLB Miss: If not found, access the page table to retrieve the PFN for
0x12345
, update the TLB, and then form the physical address.
TLB Miss Handling
When a TLB miss occurs, the system must:
- Access the Page Table: Retrieve the PTE from the page table in main memory.
- Update the TLB: Insert the new translation (VPN to PFN) into the TLB.
- Resume Execution: Continue the memory access with the translated address.
Types of TLBs
- Instruction TLB (ITLB): Stores translations for instructions.
- Data TLB (DTLB): Stores translations for data.
TLB Replacement Policies
Since the TLB has limited entries, it uses replacement policies to decide which entry to replace when new entries are loaded. Common policies include:
- Least Recently Used (LRU): Replaces the entry that has not been used for the longest time.
- Random Replacement: Replaces a randomly selected entry.
- First-In, First-Out (FIFO): Replaces the oldest entry in the TLB.
Example of TLB in MIPS Assembly
Here’s a simplified illustration of how the TLB might be used in a MIPS assembly context:
- Access Memory with TLB:
lw $t0, 0x00400000 # Load word from virtual address 0x00400000
- If
0x00400000
‘s VPN is in the TLB, get the PFN and access memory directly. - If not, handle the TLB miss by accessing the page table.
- Handling TLB Miss:
- Use an exception handler to load the PTE from the page table and update the TLB.
این page table مپ میکند که به کجای حافضه ی هارد باید دسترسی داشته باشد