TLB – HugePage …

Tháng Bảy 12, 2008

Translation lookaside buffer (TLB) là CPU cache để cache  các virtual-to-physical memory address translation, TLB được sử dụng bởi memory management

TLB là 1 table gồm chứa các các entry (mỗi entry là Page Table, map từ virtual address sang physical adress ). Nó còn gọi là content-addressable memory (CAM), nếu 1 requested address có trong bảng TLB thì nó sẽ lấy ra xài cò nếu ko có thì translation sẽ diễn ra (bằng cách sử dụng Page Table) nhưng việc translation này sẽ chậm hơn

TLB nằm giữa CPU và CPU cache hoặc nằm giữa CPU cache và primary storage memory, việc này phục thuộc cache sử dụng physical hay virtual address. Nếu cache sử dụng virtual memory, request được send trực tiếp từ CPU đến cache (cache sẽ sử dụng TLB nếu cần). Nếu cache sử dụng physical memory, cứ mỗi khi có memory operation thì CPU sẽ lookup TLB và kết quả là physical adress sẽ được send đến cache

1 cách optimize phổ biến trong việc cache physical address là thực hiện song song TLB lookup với cache access

===============

Huge Page (hay còn gọi là bigpages) là 1 feature trong Linux kernel cho phép memory được manage với những larger page (default thì 1 page chỉ có 4 KB, Default Huge Page là 2MB) 2MB – 4MB. Huge Page được sử dụng cả trong hệ thống 32-bit và 64-bit, việc sử dụng Huge Page ko phụ thuộc vào 32-bit hay 64-bit mà phục thuộc vào lượng memory trong system vì Huge Page chỉ đặc biệt hiệu quả trong system với lượng memory lớn (do lượng memory lớn thì phải đi kèm với 64-bit => huge page thường được sử dụng trong 64-bit system), còn trong hệ thống với memory ít thì nó lại phản tác dụng. Do 1 khi đã sử dụng, các Huge Page là những phần physical memory liên tiếp nhau và sẽ ko bao giời được swap out => dẫn đến việc memory swapping ko hiệu quả

Trong Linux Kernel 2.6, support thêm 1 feature mới là Huge TLB Page, thay thế cho chức năng Huge Page ở trên. Huge TLB cũng giống như Huge Page nhưng nó khác 1 ít trong cơ chế họat động. Vì số lượng entry trong TLB thì rất limited và 1 TLB miss thì rất hao tốn. Do đó, với Huge TLB Page support, mỗi 1 large TLB entry riêng có thể map 1 page nặng 2MB – 4MB, dẫn đến việc giảm số lượng các TLB miss và gia tăng performance. Chức năng Huge Page này rất quan trọng trong các system có hàng GB RAM trở lên và trong các Database System

Các Huge Page được reserve bên trong kernel và được map bởi các large TLB entry, đây là chức năng rất cần thiết trong các database application lớn. User application có thể sử dụng Huge Page thông qua mmap system calls hoặc shared memory system calls

Các Huge Page trong Huge TLB Page phải được cấp phát trước (preallocated) bởi super user

Advertisements

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s

%d bloggers like this: