Chương 3
QUẢN LÝ BỘ NHỚ Mục tiêu
Giới thiệu MMU Chế độ thực thi Translation Lookaside Buffer Chuyển địa chỉ ảo sang địa chỉ vật lý
3.1 Giới thiệu MMU
Nhân processor MIPS32 4K chứa một đơn vị quản lý MMU(Memory Management Unit). MMU có nhiệm vụ dịch địa chỉ ảo sang địa chỉ vật lý trước khi một yêu cầu được gửi đến bộ điều khiển bộ nhớ cache để so sánh tag hoặc tới đơn vị giao diện bus để tham chiếu tới bộ nhớ ngoài. Đây là một đặc điểm rất hữu ích cho hệ điều hành trong việc quản lý bộ nhớ vật lý để thực hiện nhiều nhiệm vụ cùng một lúc trong cùng địa chỉ ảo (địa chỉ vật lý khác nhau. Ngoài ra MMU còn có niệm vụ bảo vệ các vùng bộ nhớ và định nghĩa giao thức bộ nhớ cache. Trong nhân processor 4Kc, MMU là kiểu TLB(Translation Lookaside Buffer). TLB gồm có 3 vùng buffer : 16 dual-entry fully associative Joint TLB( JTLB): TLB hợp nhất 16 cổng kép 3-entry instruction micro TLB( ITLB):TLB vi dẫn 3 cổng 3-entry data micro TLB: TLB vi dữ liệu 3 cổng Khi một địa chỉ được dịch, ITLB hoặc DTLB tương ứng sẽ được truy nhập. Nếu việc dịch địa chỉ không được tìm thấy trong micro TLB thì JTLB sẽ được truy nhập. Nếu vẫn không tìm thấy thì sẽ xảy ra một ngoại lệ.Trong nhân processor 4Km và 4Kp thì MMU dựa trên một giải thuật đơn giản thông qua cơ chế Fixed Mapping(FM). Hình 1 Cho thấy cách thức mà MMU tương tác với việc truy nhập bộ nhớ cache trong nhân 4Kc. Hình 2 Trong nhân 4Km và 4Kp
Chương 3: Quản lý bộ nhớ
15
16
Sinh viên: Nguyễn Trọng Khánh
3.2 Chế độ thực thi Trong nhân processor 4K đều hỗ trợ 3 chế độ thực thi: Chế độ người dùng ( User mode) Chế độ Kernel ( Kernel mode) Chế độ Debug ( Debug mode) User mode được sử dụng cho các chương trình ứng dụng. Chế độ Kernel được dùng khi xử lý các ngoại lệ hoặc các hàm hệ thống được ưu tiên, bao gồm quản lý thanh ghi CP0 và việc truy nhập các thiết bị I/O. Chế độ Debug khi dò và loại bỏ lỗi phần mềm, hầu hết xảy ra trong công cụ phát triển phần mềm. Dịch địa chỉ do MMU thực hiện phụ thuộc vào chế độ mà processor đang hoạt động
3.2.1 Phân đoạn bộ nhớ ảo Phân đoạn bộ nhớ ảo ở từng chế độ hoạt động là khác nhau. Không gian bộ nhớ ảo có kích thước 4GBytes. Nhân hệ thống truy nhập chế độ Kernel khi khởi động lại hoặc khi phát hiện một ngoại lệ. Ở chế độ Kernel có thể truy nhập toàn bộ không gian địa chỉ cũng như tất cả thanh ghi CP0. Truy nhập ở chế độ User bị giới hạn từ địa chỉ 0x0000_0000 đến 0x7sFFF_FFFF và bị hạn chế khi truy nhập các chức năng của thanh ghi CP0. Chế độ Debug được truy nhập khi có một ngoại lệ debug. Ở chế độ này, phần mềm debug sẽ truy nhập tới cùng không gian địa chỉ và các thanh ghi CP0 giống như ở chế độ Kernel . Bên cạnh đó, nhân hệ thống còn truy nhập vào phân đoạn debug dseg, phân đoạn này đè lên một phần của segment kseg3. Sự truy nhập phân đoạn dseg có thể được bật hay tắt.
Chương 3: Quản lý bộ nhớ
17
3.2.1.1 Phân đoạn không được ánh xạ Các phân đoạn không được ánh xạ không sử dụng TLB hoặc FM để dịch từ địa chỉ ảo sang địa chỉ vật lý. Các phân đoạn này có 1 cách dịch địa chỉ đơn giản và cố định khá giống FM.
3.2.1.2 Phân đoạn được ánh xạ Một phân đoạn mapped sử dụng TLB hoặc FM để dịch từ địa chỉ ảo sang địa chỉ vật lý. Đối với nhân 4Kc, việc dịch của các phân đoạn này dựa trên nền tảng phân trang. Trong quá trình dịch bao gồm cả những thong tin xác định liệu trang đó có cacheable hay không và thuộc tính bảo vệ của trang. Đối với nhân 4Km và 4Kp, những phân đoạn này được dịch cố định từ địa chỉ ảo sang địa chỉ vật lý. Khả năng cacheability được xác định trong thanh ghi CP0.
18
Sinh viên: Nguyễn Trọng Khánh
3.2.2 Chế độ người dùng
Phân đoạn của người dùng bắt đầu từ địa chỉ 0x0000_0000 và kết thúc ở 0x7FFF_FFFF. Việc truy nhập vào tất cả các địa chỉ khác sẽ gây ra lỗi . Processor hoạt động ở chế độ người dùng khi thanh ghi Status chứa các bit có giá trị sau: UM=1 EXL=0 ERL=0 Ngoài ra thì bit DM trong thanh ghi Debug sẽ có giá trị 0.
Tất cả các địa chỉ ảo trong chế độ User đều có bit cao nhất bằng 0. Hệ thống ánh xạ tất cả cả các tham chiếu đến useg thông qua TLB hoặc FM. Đối với nhân 4Kc, địa chỉ ảo có phần mở rộng trường 8 bit ASID .
3.2.3 Chế độ Kernel Processor hoạt động ở chế độ Kernel khi bit DM trong thanh ghi Debug bằng 0. Thanh ghi Status chứa các giá trị sau: UM=0
Chương 3: Quản lý bộ nhớ
19
o o •
20
ERL=1 EXL=1
Khi một ngoại lệ không thể dò và loại bỏ, bit EXL hoặc ERL sẽ được thiết lập và processor sẽ vào chế độ Kernel. Cuối quá trình xử lý ngoại lệ, lệnh Exception Return( ERET) sẽ được thực thi. Lệnh này nhảy đến Exception PC, xóa bit ERL và xóa bit EXL( nếu ERL=0). Khi đó processor sẽ về chế độ người dùng
Sinh viên: Nguyễn Trọng Khánh
Ở chế độ Kernel, khi bit 31 bằng 0, không gian địa chỉ ảo kuseg 32 bit sẽ được chọn. Đối với nhân 4Kc, địa chỉ ảo sẽ được mở rộng thêm trường 8 bit ASID. Khi ERL=1, vùng địa chỉ của người dùng trở thành không gian địa chỉ uncached và unmapped có kích thước 2^31 byte. Khi đó, địa chỉ ảo kuseg sẽ ánh xạ trực tiếp vào cùng địa chỉ vật lý và không có thêm trường ASID Khi 3 bit cao nhất có giá trị 101, không gian địa chỉ ảo kseg 32 bit sẽ được chọn. Tham chiếu tới kseg sẽ không được ánh xạ, địa chỉ vật lý sẽ được tính bằng cách trừ đi 0xA000_0000 từ địa chỉ ảo. Khi truy nhập tới các địa chỉ này thì bộ nhớ vật lý( hoặc các thanh ghi thiết bị I/O ánh xạ vào bộ nhớ) sẽ được truy nhập trực tiếp mà không thông qua cache Khi UM=0,ERL=1,EXL=1 trong thanh khi trạng thái và DM=0 trong thanh ghi Debug và 3 bit cao nhất có giá trị 110, vùng địa chỉ ảo kseg2 sẽ được chọn. Không gian địa chỉ ảo này sẽ được đặt tại địa chỉ vật lý 0xC000_0000 đến 0xDFFF_FFFF Khi 3 bit cao nhất của địa chỉ ảo là 111, không gian địa chỉ ảo kseg3 sẽ được chọn và sẽ được đặt tại địa chỉ vật lý 0xE000_0000 đến 0xFFFF_FFFF.
Chương 3: Quản lý bộ nhớ
21
3.2.4 Chế độ Debug
Phân đoạn dseg chia thành 2 phân đoạn dmseg từ 0xFF20 đến 0xFF2F_FFFF được sử dụng khi máy dò đang làm việc ở phân đoạn nhớ, và phân đoạn drseg từ 0xFF30_0000 đến 0xFF3F_FFFF được sử dụng khi truy nhập tới bộ nhớ được ánh xạ tới các thanh ghi debug .
3.3 Translation Lookaside Buffer (4KC Core Only)
TLB bao gồm:
16 dual-entry fully associative Joint TLB(JTLB) 3-entry fully associative Instruction micro TLB(ITLB) 3-entry fully associative TLB(DTLB)
3.3.1 Joint TLB JTLB tổ chức thành 16 cặp cổng chẵn và lẻ chứa các trang được sắp xếp theo kích thước từ 4Kbytes đến 16Mbytes vào trong không gian địa chỉ vật lý 4GByte. JTLB có nhiệm vụ dịch địa chỉ ảo và Address Space Identifier(ASID) thành địa chỉ vật lý. Việc dịch sẽ được thực hiện bằng cách so sánh các bit cao của địa chỉ ảo( cùng với các bit ASID) với từng cổng trong phần tag của cấu trúc JTLB. Mỗi cổng tag ảo sẽ tương ứng với 2 cổng dữ liệu vật lý, chẵn và lẻ. Bit địa chỉ ảo cao nhất sẽ không tham gia vào quá trình so sánh tag mà để xác định cổng dữ liệu nào sẽ được sử dụng
22
Sinh viên: Nguyễn Trọng Khánh
Chương 3: Quản lý bộ nhớ
23
Table 3-6: TLB tag entry field
3.3.2 Instruction TLB ITLB dùng để dịch các luồng lệnh( instruction stream) và chỉ ánh xạ các trang có kích thước 4 Kbyte hoặc nhỏ hơn. ITLB được quản lý bởi phần cứng Nếu 1 địa chỉ không được dịch bởi ITLB, khi đó JTLB sẽ được truy nhập. Nếu thành công, thông tin dịch sẽ được copy vào ITLB . ITLB sẽ được truy nhập lại và địa chỉ đã được dịch thành công
3.3.3 Data TLB DTLB cho phép dịch các địa chỉ Load/Store nhanh hơn so với JTLB. DTLB cũng chỉ ánh xạ tới các trang có kích thước 4KByte hoặc nhỏ hơn Cũng giống như ITLB, DTLB cũng được quản lí bởi phần cứng. Tuy nhiên, trong quá trình dịch địa chỉ, JTLB cũng được truy nhập song song với DTLB. Nếu có một DTLB miss và 1JTLB hit, DTLB sẽ được nạp lại .
3.4 Chuyển địa chỉ ảo sang địa chỉ thật (4KC Core) 24
Sinh viên: Nguyễn Trọng Khánh
Chuyển địa chỉ ảo sang địa chỉ vật lý bắt đầu từ việc so sánh địa chỉ ảo từ processor với địa chỉ ảo trong TLB. Nếu số hiệu trang ảo (VPN) của địa chỉ trùng với trường VPN của cổng hoặc: Bit G của cả 2 trang chẵn và lẻ đều được thiết lập hoặc Trường ASID của địa chỉ ảo trùng với trường ASID của cổng TLB Khi đó được gọi là 1 TLB hit. Nếu không sẽ có một ngoại lệ TLB miss và khi đó TLB sẽ được ghi lại từ bảng trang địa chỉ ảo/vật lý trong bộ nhớ.
Khi có một sự tương thích địa chỉ ảo trong TLB, PFN( physical frame number) là đầu ra từ TLB móc nối với Offset sẽ tạo ra địa chỉ vật lý. Offset thể hiện một địa chỉ giữa không gian khung trang
Chương 3: Quản lý bộ nhớ
25
3.4.1 Kích thước trang và giải thuật thay thế Kích thước trang có thể được định dạng dựa trên chế độ từng cổng để ánh xạ các kích thước trang từ 4KByte đến 10MByte. Thanh ghi PageMask CP0 sẽ được load với kích thước trang mong muốn. Khi một cổng mới được ghi, thì giá trị này sẽ được cập nhật. Nhân 4Kc cung cấp một cơ chế dựa trên giải thuật thay thế để xử lý tình huống khi một TLB miss xuất hiện
26
Sinh viên: Nguyễn Trọng Khánh
3.5 Fixed Mapping MMU (4KM & 4KP Cores) FM dịch địa chỉ ảo sang địa chỉ vật lý và cung cấp các thuộc tính cho các phân đoạn bộ nhớ khác nhau. Các phân đoạn không được ánh xạ( kseg0 và kseg1) trong 4Kc TLB cũng sẽ được dịch giống như vậy bởi FM trong 4Km và 4Kp MMU FM cũng xác định khả năng cachebility của từng segment. Các thuộc tính này được điều khiển thông qua các bit của thanh ghi Config
Chương 3: Quản lý bộ nhớ
27
Trong nhân 4Km và 4Kp, không có bất cứ ngoại lệ nào xảy ra mặc dù vẫn có thể có những lỗi địa chỉ
Khi ERL=1: Phân đoạn useg và kuseg sẽ trở thành unmapped và uncached
28
Sinh viên: Nguyễn Trọng Khánh
Chương 3: Quản lý bộ nhớ
29