Chuong 3

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 15

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 ERL=1
o 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

20 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

You might also like