Có phải chip MMU (Bộ quản lý bộ nhớ) để bộ xử lý có hỗ trợ bộ nhớ ảo không?


14

Có phải chip MMU (Bộ quản lý bộ nhớ) để bộ xử lý có hỗ trợ bộ nhớ ảo không?

Có thể mô phỏng chức năng MMU trong phần mềm không? (Tôi biết rằng nó có thể sẽ có tác động lớn đến hiệu suất).


Bất kỳ máy tính có khả năng đầy đủ nào cũng có thể mô phỏng bất kỳ máy tính nào khác có đủ hiệu năng. Hoặc giả lập bất kỳ phần cứng. Câu hỏi duy nhất là cường độ của hiệu suất hit.
Vality

mọi bộ xử lý ngày nay đều cần một TLB, vì vậy nó có một đơn vị MM tích hợp.
rastafile

Câu trả lời:


22

Bất kỳ trình giả lập hệ thống nào mô phỏng hệ thống có chứa MMU đều mô phỏng MMU một cách hiệu quả trong phần mềm, vì vậy câu trả lời cho câu hỏi của bạn như đã nêu là ở bên phải. Tuy nhiên , bộ nhớ ảo yêu cầu một số cách để thực thi kiểm soát truy cập bộ nhớ hoặc ít nhất là dịch địa chỉ, do đó, nó cần mô phỏng phần mềm đầy đủ của CPU chạy phần mềm đang được kiểm soát hoặc cần hỗ trợ phần cứng.

Vì vậy, bạn có thể hình dung một cách có thể xây dựng một hệ thống không có MMU, cổng QEMU cho nó, thêm các phần còn thiếu để làm cho bộ nhớ ảo thực sự hữu ích ( ví dụ: thêm hỗ trợ trao đổi trên hệ thống máy chủ) và chạy hệ điều hành yêu cầu MMU trong QEMU, với tất cả sự bảo vệ mà bạn mong đợi trong hệ điều hành khách (loại bỏ các lỗi QEMU).

Một ví dụ thực tế và cũ, về một mô phỏng giả lập MMU không có MMU được sử dụng để cung cấp bộ nhớ ảo là máy Z , có khả năng phân trang và hoán đổi mã và dữ liệu của nó, trên các hệ thống 8 bit vào cuối những năm bảy mươi và đầu thập niên tám mươi . Điều này hoạt động bằng cách mô phỏng bộ xử lý ảo trên bộ xử lý thực bên dưới; bằng cách đó, trình thông dịch giữ toàn quyền kiểm soát bố cục bộ nhớ mà chương trình đang chạy mà nhìn thấy là.

Trong thực tế, người ta thường coi MMU là cần thiết để hỗ trợ bộ nhớ ảo, ít nhất là ở cấp hệ điều hành. Như chỉ định hạt nhân không có MMU? , có thể xây dựng nhân Linux để nó có thể chạy trên các hệ thống không có MMU, nhưng cấu hình kết quả rất bất thường và chỉ thích hợp cho các trường hợp sử dụng rất cụ thể (không có phần mềm thù địch cụ thể). Nó có thể không hỗ trợ nhiều kịch bản yêu cầu bộ nhớ ảo (hoán đổi, mmap...).


vậy ứng dụng máy ảo nào cũng có thành phần giả lập MMU?
yoyo_fun

Có - không nhất thiết là một thành phần riêng biệt, nhưng chúng có sự hỗ trợ cần thiết trong thi đua.
Stephen Kitt

7
@JenniferAnderson: Một số CPU hiện đại có các tính năng cho phép trình giả lập (một phần) giảm tải phần mô phỏng MMU cho chính MMU. Ví dụ, một chương trình chạy bên trong trình giả lập sẽ sử dụng nhiều trang bộ nhớ được mô phỏng, các trang bộ nhớ này tất nhiên được "lồng" vào các trang của bộ nhớ được trình giả lập sử dụng. Cả CPU Intel và AMD cao cấp mới hơn đều có hỗ trợ cho các bảng trang lồng nhau, cho phép trình giả lập thể hiện việc lồng này trong chính MMU, thay vì phải mô phỏng (chi phí).
Jörg W Mittag

@ Jorg thực sự, cảm ơn đã làm rõ. Hầu hết các trình ảo hóa vẫn bao gồm một số mức mô phỏng phần mềm mặc dù vậy chúng sẽ hoạt động mà không cần hỗ trợ phần cứng bổ sung. Tôi đã bị chớp mắt bởi các khía cạnh của câu hỏi.
Stephen Kitt

3
@JenniferAnderson: Vâng, chức năng này được giới thiệu cụ thể cho ảo hóa para. (Lưu ý rằng không có gì mới, ảo hóa para hỗ trợ phần cứng đã tồn tại trong thế giới máy tính lớn từ đầu những năm 1960.) Tuy nhiên, nó cũng có thể được sử dụng cho các ứng dụng thú vị khác, như tăng tốc Bộ sưu tập Rác (xem ví dụ, trình thu thập C4 trong Zing JVM của Azul). Tuy nhiên, lưu ý rằng tất cả những điều này hoạt động theo cả hai hướng: theo cùng một cách mở rộng MMU với hỗ trợ ảo hóa không gì khác hơn là tối ưu hóa hiệu suất và ảo hóa
Jörg W Mittag

7

Nó phụ thuộc vào chính xác những gì bạn gọi là bộ nhớ ảo. Một mô hình thú vị là mô hình Win16 cũ (được biết đến nhiều nhất từ ​​Windows 3.x cũ, không phải Windows NT). Trong mô hình đó, bạn đã GlobalLockGlobalUnlock, LocalLockvà các LocalUnlockchức năng. Đây là một hình thức hợp tác, quản lý thủ công bộ nhớ ảo. Vì điều này đã được thực hiện trong phần mềm (ứng dụng), nên nó không yêu cầu MMU. Và bộ nhớ là ảo theo nghĩa là bộ nhớ đã mở khóa có thể được hoán đổi sang đĩa.

Tuy nhiên, trong mô hình Win16 không có sự bảo vệ giữa các quy trình khác nhau. Nếu một quá trình khác để lại dữ liệu trong bộ nhớ, bạn có thể ghi đè lên nó. Đây không phải là một hạn chế cơ bản. Với SSD nhanh hiện nay, bạn có thể loại bỏ hoàn toàn quá trình không chạy khỏi bộ nhớ và thực hiện trong thời gian hợp lý.


7

Không cần thiết phải có MMU phần cứng, nếu bạn có phần mềm có thể trao đổi các tiến trình đến và từ bộ nhớ vật lý.

Đây là phương thức hoạt động của các hệ điều hành đa tác vụ sớm. Chỉ có một tiến trình nằm trong bộ nhớ tại bất kỳ thời điểm nào, nó được hoán đổi toàn bộ khi hết thời gian của nó (bạn có thể thấy rằng điều này trở nên có vấn đề với các quy trình lớn). Nội dung bộ nhớ được xem bởi quy trình hiện đang chạy không giống với bất kỳ quy trình nào khác được xem và mỗi quy trình có chế độ xem riêng về không gian địa chỉ.

Một số hỗ trợ phần cứng rất hữu ích - một khái niệm về vùng nhớ "được bảo vệ" cho việc sử dụng riêng của HĐH (ví dụ: tất cả các địa chỉ có bộ MSB chỉ có thể truy cập trong chế độ giám sát) và giá trị "ngắt" cho biết địa chỉ cao nhất được sử dụng, nhưng quản lý bộ nhớ phần cứng không phải là một yêu cầu tuyệt đối cho bộ nhớ ảo; nó chỉ là một cách đặc biệt hiệu quả để đạt được nó.


2
Tuy nhiên, đó không thực sự là bộ nhớ ảo, đó chỉ là quá trình hoán đổi ... (Chúng tôi thực sự cần xác định bộ nhớ ảo ảo để có câu trả lời thích hợp cho câu hỏi này!)
Stephen Kitt

Mỗi quy trình có chế độ xem riêng về không gian địa chỉ - Tôi sẽ chỉnh sửa để làm rõ định nghĩa tôi đang sử dụng.
Toby Speight

Đúng, nhưng đó là ánh xạ một-một cho tất cả các quy trình. (Từ quan điểm của các quá trình không có nhiều khác biệt nên không có tranh luận thực sự ở đó ...)
Stephen Kitt

0

Các máy thương mại ban đầu để làm VM không có MMU - chúng có VM được tích hợp trong bộ xử lý. Suy nghĩ hiện tại của tôi là MMU chỉ là một suy nghĩ để đưa VM lên trên các bộ xử lý không VM. VM được phát triển tại Đại học Manchester và các nhà thiết kế của Burroughs đã bị thuyết phục rằng họ nên đưa nó vào - mặc dù rất sáng tạo vào thời điểm đó.

Burveys B5000 (nay là máy Unisys MCP) đã sử dụng các bộ mô tả bộ nhớ thực thi các ranh giới bộ nhớ - đi ra ngoài một ranh giới và chương trình của bạn bị bỏ qua (tôn trọng các ranh giới là nền tảng của một xã hội tốt đẹp, nhưng một số lạm dụng đặc quyền, do đó các ranh giới phải được thi hành).

Bộ mô tả giữ địa chỉ bộ nhớ, chiều dài khối và loại dữ liệu, nhưng cũng là bit P hoặc bit hiện diện quan trọng. P-bit cho biết khối nằm trong bộ nhớ. P-bit bằng 0 có nghĩa là khối nằm trên bộ lưu trữ lớn và địa chỉ là địa chỉ lưu trữ, trong chương trình gốc (mã hoặc dữ liệu) hoặc trong VM (dữ liệu cuộn ra).

Những máy này thực hiện một mô hình bộ nhớ phân cấp. MMU dường như là để bù đắp cho sự thiếu hụt của bộ nhớ phẳng, cần ánh xạ các đối tượng người dùng vào bộ nhớ phẳng. JK Iliffe cũng thiết kế các máy ICL với mô hình này:

http://www.computerconservationsociety.org/resurrection/res74.htm#f

https://en.wikipedia.org/wiki/Burroughs_large_systems

Sự khác biệt giữa các máy này và hầu hết các máy hiện nay là chúng giải quyết kiến ​​trúc hệ thống hoàn chỉnh, không chỉ là kiến ​​trúc CPU.

Vì vậy, dường như không chỉ các MMU không cần thiết, mà các hệ thống sẽ tốt hơn nếu không có chúng.


-1

Phần lớn các bộ xử lý máy tính để bàn, máy tính xách tay và máy chủ bao gồm một hoặc nhiều TLB trong phần cứng quản lý bộ nhớ và nó hầu như luôn có mặt trong bất kỳ bộ xử lý nào sử dụng bộ nhớ ảo phân trang hoặc phân đoạn .

Dịch_lookaside_buffer

Và sau đó, đọc về Bộ nhớ ảo và ý nghĩa thực sự của nó. Không gian địa chỉ ảo khổng lồ không phải là ý tưởng chính. Ý tưởng chính là bộ đệm / bộ đệm, trên nhiều cấp độ.

Nó không đơn giản lắm, nhưng bộ nhớ cache TLB này là một phần cứng quan trọng mà hệ thống con mm của hạt nhân xây dựng (nếu không VM sẽ chủ yếu là chi phí hoạt động).


VM =

bộ nhớ ảo HOẶC máy ảo. Rất khác biệt, rất kết nối.


Vì vậy, câu trả lời là không, một chip MMU (một đơn vị riêng biệt bên ngoài CPU, trên bo mạch chính) là không cần thiết.

Có, một số MMU phần cứng (trong CPU) là cần thiết để suy nghĩ về VM hữu ích. (Bắt đầu với phân đoạn 8086 này , dành cho nền tảng x86)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.