1. Trang chủ
  2. » Luận Văn - Báo Cáo

bài tập lớn đề tài paging faste translations tlbs

21 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Cái gì được gọi là TLB,Nó giúp tăng tốc độ phân trang như thế nào?Bộ đệm tra cứu dịch TLB là một loại bộ nhớ đệm lưu trữ các bảndịch gần đây của bộ nhớ ảo sang địa chỉ vật lý để cho phép

Trang 1

TRƯỜNG ĐẠI HỌC PHENIKAAKHOA CÔNG NGHỆ THÔNG TIN

BÀI TẬP LỚN

Đề tài: Paging: Faste Translations (TLBs)

Học Phần: Hệ điều hành-1-2-23(N07)Giảng Viên: TS.Trần Đăng HoanSinh Viên: Trần Long Khánh - 22010449

Lục Nam Tiến - 22010223Cao Văn Trường - 22010536

Hà Nội, Tháng 3 Năm 2024

Trang 2

Mục lục

2.1 TLB Basic Algorithm 5

2.2 EXEMPLE ACCESSING AN ARRAY 7

2.3 Who Handles The TLB Miss ? 10

2.4 TLB Contents: What’s In There? 13

2.5 TLB Issue: Context Switches 14

2.6 Issue: Replacement Policy 17

2.7 A Real TLB Entry 18

Trang 3

Chương 1

Lời Mở Đầu

Trong thế giới công nghệ thông tin ngày nay, hệ điều hành (OS) đóngvai trò không thể thiếu như là bộ não điều khiển mọi hoạt động của máytính Từ việc quản lý tài nguyên phần cứng đến việc cung cấp giao diệntrực quan cho người dùng, hệ điều hành là nền tảng cho mọi ứng dụng vàdịch vụ Báo cáo này sẽ khám phá sâu hơn vào cấu trúc, chức năng, vàtầm quan trọng của hệ điều hành, cũng như cách chúng tiếp tục phát triểnđể đáp ứng nhu cầu ngày càng tăng của người dùng và doanh nghiệp.

Dùng phân trang như một cơ chế cốt lõi để hỗ trợ bộ nhớ ảo có thể chỉhuy bộ nhớ với hiệu suất cao Bằng cách chia không gian bộ nhớ thànhnhững phần nhỏ, fixed-sized units( ), phân trang đòi hỏi một số lươnglớn thông tin ánh xạ Bới vì thông tin ánh xạ thường được lưu trữ trongbộ nhớ vật lý, phân trang hợp lý yêu cầu cần thêm bộ nhớ (extra memory)tra cứu cho mỗi địa chỉ ảo được tạo ra bởi chương trình Đi đến bộ nhớcho mỗi thông tin dịch trước đó với mọi chỉ dẫn để tìm hoặc tải rõ ranghoặc lưu trữ rõ ràng cực kỳ chậm Và do đó vấn đề của chúng tôi là :

CÁCH TĂNG TỐC ĐỘ DỊCH ĐỊA CHỈ

Trang 4

Cách chúng tôi có thể tăng tốc độ dịch địa chỉ, và thường tránh xa thamchiếu bộ nhớ bổ sung mà phân trang dường như yêu cầu? Cần hỗ trợ cầncứng gì ? Cần tham gia của hệ điều hành nào ? Cái gì được gọi là TLB,Nó giúp tăng tốc độ phân trang như thế nào?

Bộ đệm tra cứu dịch (TLB) là một loại bộ nhớ đệm lưu trữ các bảndịch gần đây của bộ nhớ ảo sang địa chỉ vật lý để cho phép truy xuấtnhanh hơn Bộ đệm tốc độ cao này được thiết lập để theo dõi các mụctrong bảng trang (PTE) được sử dụng gần đây.

Khi chúng ta muốn nó phân trang nhanh hơn, nhu cầu sử dụng hệ điềuhành để có 1 số hỗ trợ, Và hỗ trợ thường đến từ một số người bạn cũ củaHệ Điều Hành: Phần cứng Để tăng tốc dịch địa chỉ, chúng tôi sẽ thêmnhững cái được gọi là translation- lookaside buffer ( bộ đệm tra cứu bảndịch, hoặc TLB TLB là một thành phần trong chip memory-managementunit( MMU ) < Đơn vị quản lí bộ nhớ >, và chỉ đơn giản là bộ đệm phầncứng dịch địa chỉ từ bộ nhớ ảo sang bộ nhớ vật lý phổ biến, do đó, có mộtcái tên tốt hơn để gọi nó là address translation cache ( bộ đệm dịch địa chỉ) Dựa trên mỗi tham chiếu bộ nhớ ảo, ổ cứng sẽ kiểm tra TLB đầu tiênliệu trong đó có mong muốn giữ bản dịch hay không, nếu vậy, bản dịch sẽthực hiện mà không cần đến việc trao đổi với bảng trang.

Trang 6

Quan sát mã giả hình 2.1 để xem cách nào để ổ cứng có thể dịchđịa chỉ ảo, giả định một bảng phân trang tuyến tính(linear page table)đơn giản(i.e, , bảng trang là một mảng) và một TLB quản lý ổ cứng (hardware managed TLB ) (phần cứng xử lý phần lớn trách nhiệm truycập bảng trang; chúng tôi sẽ giải thích thêm về điều này bên dưới).

Thuật toán mà phần cứng tuân theo hoạt động như sau: Đầu tiên, tríchxuất số trang ảo(VPN) từ địa chỉ ảo (Hình2.1) và kiểm tra xem TLB cógiữ bản dịch cho VPN này hay không (Dòng 2) Nếu đúng như vậy, chúngtôi có lượt truy cập TLB, có nghĩa là TLB giữ bản dịch Thành công! Bâygiờ chúng ta có thể trích xuất số khung trang (PFN) từ mục TLB có liênquan, ghép nó vào phần bù từ địa chỉ ảo ban đầu và tạo thành địa chỉ vậtlý (PA) mong muốn và bộ nhớ truy cập (Dòng 5–7), giả sử các kiểm trabảo vệ không thất bại (Dòng 4).

Nếu CPU không tìm thấy bản dịch trong TLB (lỗi TLB), chúng ta cònmột số việc phải làm Trong ví dụ này, phần cứng truy cập bảng trang đểtìm bản dịch (Dòng 11–12) và giả sử rằng tham chiếu bộ nhớ ảo do quytrình tạo ra là hợp lệ và có thể truy cập được (Dòng 13, 15), cập nhậtTLB với bản dịch (Dòng 18) Tập hợp các hành động này tốn kém, chủyếu là do cần có thêm tham chiếu bộ nhớ để truy cập bảng trang (Dòng12) Cuối cùng, khi TLB đã được cập nhật, phần cứng sẽ thử lại lệnh; lầnnày, bản dịch được tìm thấy trong TLB và tham chiếu bộ nhớ được xử lýnhanh chóng.

TLB, giống như tất cả các bộ nhớ đệm khác, nó được xâu dựng dựatrên tiền đề rằng trong cách trường hợp thông thường, bản dịch có thể tìmthấy trên các bộ nhớ đệm( tức là các lượt truy cập) Nếu vì thế, chi phísẽ được thêm vào một chút vì TLB được tìm thấy gần lõi xử lý và đượcthiết kế để hoạt động khá nhanh Khi xảy ra lỗi, chi phí phân trang sẽ cao;

Trang 7

bảng trang phải được truy cập để tìm bản dịch và kết quả tham chiếu bộnhớ bổ sung (hoặc nhiều hơn, với các bảng trang phức tạp hơn) Nếu điềunày xảy ra thường xuyên, chương trình có thể sẽ chạy chậm hơn đáng kể;việc truy cập bộ nhớ, so với hầu hết các lệnh CPU, khá tốn kém và việcbỏ sót TLB dẫn đến nhiều lượt truy cập bộ nhớ hơn Vì vậy, chúng tôi hyvọng có thể tránh được TLB bị trượt nhiều nhất có thể.

2.2 EXEMPLE ACCESSING AN ARRAY

Để làm rõ hoạt động của một TLB, hãy nghiên cứu một dấu vết địachỉ ảo đơn giản và nhìn xem cách một TLB có thể cải thiện hiệu suất củanó Trong ví dụ sau: Giả sử chúng ta có 10 số nguyên 4 byte trong bộ nhớ,bắt đầu từ địa chỉ ảo 100 Giả sử thêm là chúng ta có một không gian địachỉ ảo nhỏ 8bit, với 16 byte trang, do đó, địa chỉ ảo chia thành một VPN4 bit ( có 16 trang ảo ) và một offset 4 bit ( có 16 byte trên mỗi trang) Hình 2.2, quan sát mảng đặt ra trên 16 trang 16byte của hệ thống.Như bạn có thể thấy, Mục đầu tiên của mảng (a[0]) bắt đầu vào là VPN =06, offset = 04; chỉ có 3 số nguyên 4byte phù hợp với 4 trang Mảng tiếptục vào trang tiếp theo (VPN = 07) , tiếp theo ở đây có 4 mục được xácđịnh vị trí ( a[3], ,a[6]) Kết thúc, 3 mục cuối cùng là a[7], a[9] sẽ đượcxác định vị trí vào trong tiếp theo của không gian địa chỉ (VPN = 08).

Trang 8

Hình 2.2: Example: An Array In A Tiny Address SpaceBây giờ hãy xem xét một vòng lặp đơn giản truy cập từng phần tửmảng, trông giống như thế này trong C:

Để đơn giản, chúng ta sẽ giả sử rằng bộ nhớ duy nhất truy cập vàomảng mà vòng lặp tạo ra (bỏ qua các biến i và sum, cũng như chính cáclệnh) Khi phần tử mảng đầu tiên (a[0]) được truy cập, CPU sẽ thấy tảitới địa chỉ ảo 100 Phần cứng trích xuất VPN từ địa chỉ này (VPN=06)và sử dụng địa chỉ đó để kiểm tra TLB xem có bản dịch hợp lệ hay không.

Trang 9

Giả sử đây là lần đầu tiên chương trình truy cập vào mảng thì kết quả sẽlà lỗi TLB.

Quyền truy cập tiếp theo là vào a[1] và có một số tin tốt ở đây: một cútấn công TLB! Bởi vì phần tử thứ hai của mảng được đóng gói bên cạnhphần tử đầu tiên nên nó nằm trên cùng một trang; vì chúng ta đã truycập trang này khi truy cập phần tử đầu tiên của mảng nên bản dịch đãđược tải vào TLB Và đó là lý do cho sự thành công của chúng tôi Việctruy cập vào a[2] gặp phải thành công tương tự (một lần truy cập khác),vì nó cũng nằm trên cùng một trang với a[0] và a[1].

Thật không may, khi chương trình truy cập vào [3], chúng tôi gặp phảilỗi TLB khác Tuy nhiên, một lần nữa, các mục tiếp theo (a[4] a[6]) sẽxuất hiện trong TLB, vì chúng đều nằm trên cùng một trang trong bộ nhớ.Cuối cùng, quyền truy cập vào a[7] gây ra lỗi TLB cuối cùng Phần cứngmột lần nữa tra cứu bảng trang để tìm ra vị trí của trang ảo này trong bộnhớ vật lý và cập nhật TLB tương ứng Hai quyền truy cập cuối cùng (a[8]và a[9]) nhận được các lợi ích của bản cập nhật TLB này; khi phần cứngtìm kiếm bản dịch của chúng trong TLB, sẽ có thêm hai lần truy cập nữa.Chúng ta hãy tóm tắt hoạt động TLB trong mười lần truy cập vào mảng:trượt, trúng, trúng, trượt, trúng, trúng, trúng, trượt, trúng, trúng Do đó,tỷ lệ trúng TLB của chúng tôi, tức là số lượt truy cập chia cho tổng sốlượt truy cập, là 0,7 Mặc dù con số này không quá cao (thực sự, chúng tôimong muốn tỷ lệ trúng đạt tới 1), nhưng nó khác 0, điều này có thể gâyngạc nhiên Mặc dù đây là lần đầu tiên chương trình truy cập vào mảngnhưng TLB vẫn cải thiện hiệu suất do vị trí không gian Các phần tử củamảng được đóng gói chặt chẽ vào các trang (tức là chúng gần nhau trongkhông gian) và do đó chỉ lần truy cập đầu tiên vào một phần tử trên mộttrang mới gây ra lỗi TLB.

Trang 10

Cũng lưu ý vai trò của kích thước trang trong ví dụ này Nếu kích thướctrang chỉ đơn giản là lớn gấp đôi (32 byte, không phải 16), thì việc truycập mảng thậm chí còn ít bị lỗi hơn Vì kích thước trang thông thườnggiống như 4KB nên các loại truy cập dựa trên mảng, dày đặc này đạt đượchiệu suất TLB tuyệt vời, chỉ gặp phải một lỗi duy nhất trên mỗi trangtruy cập.

Điểm cuối cùng về hiệu suất TLB: nếu chương trình, ngay sau khi vònglặp này hoàn thành, truy cập lại vào mảng, chúng ta có thể sẽ thấy kếtquả thậm chí còn tốt hơn, giả sử rằng chúng ta có TLB đủ lớn để lưu vàobộ nhớ đệm các bản dịch cần thiết: nhấn, nhấn, đánh, đánh, đánh, đánh,đánh, đánh, đánh, đánh Trong trường hợp này, tỷ lệ trúng TLB sẽ caodo vị trí tạm thời, tức là việc tham chiếu nhanh các mục bộ nhớ theo thờigian Giống như bất kỳ bộ đệm nào, TLB dựa vào cả vị trí không gianvà thời gian để thành công, đó là các thuộc tính của chương trình Nếuchương trình quan tâm có đặc điểm địa phương như vậy (và nhiều chươngtrình cũng vậy), tỷ lệ trúng TLB có thể sẽ cao.

2.3 Who Handles The TLB Miss ?

Một câu hỏi mà chúng ta cần trả lời : Ai xử lý TLB ? Có 2 câu trảlời khả thi là : Phần cứng ( hardware ) hoặc Phần mềm ( OS ) Ngàyxưa, Phần cứng có các tập lệnh phức tạp ( thường được gọi là CISC, cónghĩa là complex instruction set computers ) và người đã xây dựng raphần cứng không hoàn toàn tin tưởng vào những người làm hệ điều hànhlén lút đó Do đó , Phần cứng sẽ hoàn toàn xử lý lỗi của TLB Để làmđược điều này, Phần cứng cần phàn biết chính xác địa chỉ của bảng trangnằm ở đâu trong bộ nhớ ( thông qua thanh ghi cơ sở bảng trang, Hình 2.1).

Trang 11

Hình 2.3: TLB Control Flow Algorithm (OS Handled)

Các kiến trúc hiện đại hơn (ví dụ: MIPS R10k [H93] hoặc SPARC v9[WG00] của Sun, cả RISC hoặc máy tính tập lệnh rút gọn) , TLB đượcquản lý bằng phần mềm Khi xảy ra lỗi TLB, phần cứng chỉ cần đưa ramột ngoại lệ (dòng 11 trong Hình 19.3), tạm dừng luồng lệnh hiện tại,tăng mức đặc quyền lên chế độ kernel và chuyển sang trình xử lý bẫy Nhưbạn có thể đoán, trình xử lý bẫy này là mã trong hệ điều hành được viếtvới mục đích rõ ràng là xử lý các lỗi TLB Khi chạy, mã sẽ tra cứu bảndịch trong bảng trang, sử dụng các hướng dẫn “đặc quyền” đặc biệt để cậpnhật TLB và quay trở lại từ bẫy; tại thời điểm này, phần cứng sẽ thử lạilệnh (dẫn đến một lần truy cập TLB).

Trang 12

Một vài chi tiết quan trọng:

•Đầu tiên, hướng dẫn return-from-trap cần phải khác một chút so vớihướng dẫn return-from-trap mà chúng ta đã thấy trước đây khi thựchiện lệnh gọi hệ thống Trong trường hợp sau, lệnh return-from-trapsẽ tiếp tục thực hiện lệnh sau bẫy vào hệ điều hành, giống như lệnhquay lại từ lệnh gọi thủ tục sẽ quay lại lệnh ngay sau lệnh gọi vào thủtục Trong trường hợp trước, khi quay trở lại từ bẫy xử lý sai TLB,phần cứng phải tiếp tục thực thi theo lệnh gây ra bẫy; do đó, lần thửlại này cho phép cấu trúc trong chạy lại, lần này dẫn đến một lần truycập TLB Do đó, tùy thuộc vào cách gây ra bẫy hoặc ngoại lệ, phầncứng phải lưu một PC khác khi bẫy vào hệ điều hành, để tiếp tục hoạtđộng bình thường khi đến thời điểm thực hiện việc đó.

•Thứ hai, khi chạy mã xử lý lỗi TLB, hệ điều hành cần phải hết sứccẩn thận để không xảy ra chuỗi lỗi TLB vô tận Có nhiều giải pháp;ví dụ: bạn có thể giữ các trình xử lý lỗi TLB trong bộ nhớ vật lý (nơichúng không được ánh xạ và không chịu sự dịch địa chỉ) hoặc dànhmột số mục trong TLB cho các bản dịch hợp lệ vĩnh viễn và sử dụngmột số vị trí dịch vĩnh viễn đó cho chính mã xử lý ; những bản dịchcó dây này luôn xuất hiện trong TLB.

Ưu điểm chính của cách tiếp cận được quản lý bằng phần mềm là tínhlinh hoạt:

•HĐH có thể sử dụng bất kỳ cấu trúc dữ liệu nào nó muốn để triểnkhai bảng trang mà không cần thay đổi phần cứng.

•Một ưu điểm khác là tính đơn giản, như được thấy trong luồng điềukhiển TLB (dòng 11 trong Hình 19.3, trái ngược với dòng 11–19 trong

Trang 13

Hình 19.1) Phần cứng không làm được gì nhiều khi bỏ lỡ: chỉ cần đưara một ngoại lệ và để trình xử lý lỗi TLB của OS thực hiện phần cònlại.

Nhược điểm: Hệ điều hành cần phải cẩn thận để tránh xảy ra chuỗiTLB vô tận.

Giải pháp để hệ điều hành tránh gây ra chuỗi TLB vô tận:

•Lưu trữ trình xử lý lỗi TLB trong bộ nhớ vật lý.

•Dành riêng một số mục trong TLB cho bản dịch vĩnh viễn hợp lệ.

•Sử dụng thuật toán dự đoán lỗi TLB để dự đoán khả năng gây lỗitrong tương lai.

•Sử dụng bộ nhớ đệm bảng trang.

•Sử dụng bảng trang đa cấp.

2.4 TLB Contents: What’s In There?

Một TLB điển hình có thể có 32, 64 hoặc 128 mục và được gọi là kếthợp đầy đủ Về cơ bản, điều này chỉ có nghĩa là bất kỳ bản dịch nào cũngcó thể ở bất kỳ đâu trong TLB và phần cứng sẽ tìm kiếm song song toànbộ TLB để tìm bản dịch mong muốn Một mục TLB có thể trông như thếnày:

VNP | PFN |other bits

Lưu ý rằng cả VPN và PFN đều có trong mỗi mục nhập, vì bản dịch cóthể kết thúc ở bất kỳ vị trí nào trong số này (về mặt phần cứng, TLBđược gọi là bộ nhớ đệm liên kết đầy đủ) Phần cứng tìm kiếm các mục

Trang 14

song song để xem có khớp không.

Thú vị hơn là những “bit khác” Ví dụ: TLB thường có một bit hợp lệ,cho biết mục nhập có bản dịch hợp lệ hay không Cũng phổ biến là các bitbảo vệ, xác định cách truy cập một trang (như trong bảng trang) Ví dụ:các trang mã có thể được đánh dấu là đọc và thực thi, trong khi các trangheap có thể được đánh dấu là đọc và ghi Cũng có thể có một số trườngkhác, bao gồm mã định danh không gian địa chỉ, bit bẩn, v.v.

Với TLB, các vấn đề mới phát sinh khi chuyển đổi giữa các quy trình(và do đó là không gian địa chỉ) Cụ thể, TLB chứa các bản dịch từ ảosang vật lý chỉ hợp lệ cho quy trình hiện đang chạy; những bản dịch nàykhông có ý nghĩa đối với các quá trình khác Do đó, khi chuyển từ quytrình này sang quy trình khác, phần cứng hoặc hệ điều hành (hoặc cả hai)phải cẩn thận để đảm bảo rằng quy trình sắp chạy không vô tình sử dụngcác bản dịch từ một số quy trình đã chạy trước đó.

Để hiểu rõ hơn về tình huống này, chúng ta hãy xem một ví dụ Khimột tiến trình (P1) đang chạy, nó giả định rằng TLB có thể đang lưu vàobộ đệm các bản dịch hợp lệ cho nó, tức là các bản dịch đến từ bảng trangcủa P1 Trong ví dụ này, giả sử rằng trang ảo thứ 10 của P1 được ánh xạtới khung vật lý 100.

Trong ví dụ này, giả sử một quy trình khác (P2) tồn tại và hệ điềuhành có thể sớm quyết định thực hiện chuyển đổi ngữ cảnh và chạy nó.Giả sử ở đây rằng trang ảo thứ 10 của P2 được ánh xạ tới khung vật lý170 Nếu các mục nhập cho cả hai quy trình đều nằm trong TLB thì nộidung của TLB sẽ là:

Trang 15

Trong TLB ở trên, rõ ràng chúng ta có một vấn đề: VPN 10 dịch sangPFN 100 (P1) hoặc PFN 170 (P2), nhưng phần cứng không thể phân biệtmục nhập nào dành cho quy trình nào Vì vậy, chúng ta cần thực hiệnthêm một số công việc để TLB hỗ trợ ảo hóa một cách chính xác và hiệuquả trên nhiều quy trình Và do đó, một mấu chốt:

CÁCH QUẢN LÝ NỘI DUNG TLB TRÊN CHUYỂN ĐỔITIẾP THEO

Khi chuyển đổi ngữ cảnh giữa các quy trình, các bản dịch trong TLB choquy trình cuối cùng không có ý nghĩa đối với quy trình sắp chạy Phầncứng hoặc hệ điều hành nên làm gì để giải quyết vấn đề này?

Có một số giải pháp khả thi cho vấn đề này Một cách tiếp cận là chỉcần xóa TLB trên các công tắc ngữ cảnh, do đó làm trống nó trước khichạy quy trình tiếp theo Trên hệ thống dựa trên phần mềm, điều này cóthể được thực hiện bằng lệnh phần cứng rõ ràng (và đặc quyền); với TLBđược quản lý bằng phần cứng, việc xóa có thể được thực hiện khi thanhghi cơ sở bảng trang được thay đổi (lưu ý rằng dù sao đi nữa, hệ điều hànhcũng phải thay đổi PTBR trên chuyển đổi ngữ cảnh) Trong cả hai trườnghợp, thao tác xóa chỉ đơn giản đặt tất cả các bit hợp lệ về 0, về cơ bản làxóa nội dung của TLB.

Bằng cách xóa TLB trên mỗi chuyển đổi ngữ cảnh, giờ đây chúng tôi

Ngày đăng: 23/07/2024, 17:18