Tải bản đầy đủ (.pdf) (23 trang)

BÁO cáo bài tập lớn kĩ THUẬT máy TÍNH tổng quát về RAM

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.53 MB, 23 trang )

ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRƯỜNG ĐIỆN-ĐIỆN TỬ
----------

BÁO CÁO BÀI TẬP LỚN KĨ THUẬT MÁY TÍNH
Đề Tài :
Họ và tên

MSSV

Email

Nguyễn Thanh Thủy

20182815



Ngô Văn Tuấn

20182859



Nguyễn Thành Trung

TIEU LUAN MOI download : moi nhat


Mục Lục


....................................................................................................................................... 1
1. RAM....................................................................................................................... 4
1.1 Tổng quát về RAM..............................................................................................4
1.2

Phân loại RAM.................................................................................................4

1.2.1

RAM Tĩnh.................................................................................................4

1.2.2

RAM Động................................................................................................5

1.3

Các Thông số của RAM...................................................................................6

1.4 Truy cập DRAM..................................................................................................7
1.5 Chi tiết kỹ thuật truy cập DRAM.........................................................................8
1.6 Giao thức truy cập đọc.........................................................................................9
2.

Bộ nhớ Cache.....................................................................................................10
2.1 Cache là gì?........................................................................................................10
2.2 Vai trị và nguyên lý hoạt động..........................................................................10
2.2.1 Vai Trò........................................................................................................10
2.2.2 Nguyên lý hoạt động của cache...................................................................11
2.2.3 Trao đổi dữ liệu giữa CPU – cache.............................................................12

2.2.4 Các hệ số Hit và Miss.................................................................................12
2.3 Các dạng kiến trúc cache...................................................................................13
2.3.1 Kiến trúc Look Aside..................................................................................13
2.3.2 Kiến trúc Look Through.............................................................................13
2.4. Các phương pháp đọc ghi.................................................................................14
2.5. Hiệu năng cache................................................................................................15
2.6 Các phương pháp giảm miss cho cache.............................................................15
2.6.1 Các loại miss của cache..............................................................................15
2.6.2 Các phương pháp giảm miss cho cache.......................................................16

3. Bộ nhớ ảo................................................................................................................ 16
3.1. Tổng quan bộ nhớ ảo.......................................................................................16
3.2. Simplest Address Translation (Dịch địa chỉ đơn giản nhất).............................17
3.3. Bảng trang nhiều cấp........................................................................................18
3.4. Tối ưu hóa bảng trang nhiều cấp.......................................................................20

TIEU LUAN MOI download : moi nhat


3.5. Tác động của ảo hóa.........................................................................................21

Lời mở đầu
Trong những ngày đầu, máy tính đơn giản hơn nhiều. Các thành phần khác nhau của
hệ thống, chẳng hạn như CPU, bộ nhớ, bộ nhớ chung và giao diện mạng, được phát
triển cùng nhau và do đó, hiệu suất của chúng khá cân bằng. Ví dụ, bộ nhớ và giao
diện mạng khơng nhanh hơn (nhiều) so với CPU khi cung cấp dữ liệu
Ngày nay, Khi các lõi CPU trở nên nhanh hơn và nhiều hơn, yếu tố hạn chế đối với
hầu hết các chương trình hiện nay và sẽ là khả năng truy cập bộ nhớ trong một thời
gian. Các nhà thiết kế phần cứng đã đưa ra các kỹ thuật tăng tốc và xử lý bộ nhớ phức
tạp hơn bao giờ hết - chẳng hạn như bộ nhớ đệm của CPU.

Bài báo cáo này giải thích cấu trúc của hệ thống con bộ nhớ được sử dụng trên phần
cứng hàng hóa hiện đại, minh họa lý do tại sao bộ nhớ đệm CPU được phát triển, cách
chúng hoạt động và chương trình nên làm gì để đạt được hiệu suất tối ưu bằng cách sử
dụng chúng.

TIEU LUAN MOI download : moi nhat


1. RAM

1.1 Tổng quát về RAM

RAM (viết tắt của Random Access Memory) là một loại bộ nhớ khả biến cho
phép truy xuất đọc-ghi ngẫu nhiên đến bất kỳ vị trí nào trong bộ nhớ dựa theo địa
chỉ bộ nhớ. Thông tin lưu trên RAM chỉ là tạm thời, chúng sẽ mất đi khi mất nguồn
điện cung cấp.
RAM là bộ nhớ chính của máy tính và các hệ thống điều khiển, để lưu trữ các
thông tin thay đổi đang sử dụng. Các hệ thống điều khiển còn sử dụng SRAM như
làm một thiết bị lưu trữ thứ cấp (secondary storage). Khi cần thiết thì bố trí một pin
nhỏ làm nguồn điện phụ để duy trì dữ liệu trong RAM. RAM có một đặc tính là
thời gian thực hiện thao tác đọc hoặc ghi đối với mỗi ô nhớ là như nhau, cho dù
đang ở bất kỳ vị trí nào trong bộ nhớ. Mỗi ơ nhớ của RAM đều có một địa chỉ.
Thông thường, mỗi ô nhớ là một byte (8 bit); tuy nhiên hệ thống lại có thể đọc ra
hay ghi vào nhiều byte (2, 4, 8 byte) một lúc.
Bộ nhớ RAM có 4 đặc trưng sau:
 Dung lượng bộ nhớ: Tổng số byte của bộ nhớ (nếu tính theo byte) hoặc là
tổng số bit trong bộ nhớ nếu tính theo bit.
 Tổ chức bộ nhớ: Số ô nhớ và số bit cho mỗi ô nhớ
 Thời gian thâm nhập: Thời gian từ lúc đưa ra địa chỉ của ô nhớ đến lúc đọc
được nội dung của ơ nhớ đó.

 Chu kỳ bộ nhớ: Thời gian giữa hai lần liên tiếp thâm nhập bộ nhớ.

1.2 Phân loại RAM
1.2.1 RAM Tĩnh
Bộ nhớ truy cập ngẫu nhiên tĩnh (SRAM hay RAM tĩnh) là một loại bộ nhớ sử
dụng công nghệ bán dẫn. Từ "tĩnh" nghĩa là bộ nhớ vẫn lưu dữ liệu nếu có điện,
khơng như RAM động cần được nạp lại thường xuyên. Không nên nhầm RAM tĩnh
với bộ nhớ chỉ đọc và bộ nhớ flash vì RAM tĩnh chỉ lưu được dữ liệu khi có điện.

TIEU LUAN MOI download : moi nhat


Hình 2.4 mơ tả cấu trúc của một tế bào SRAM 6 bóng bán dẫn.
Lõi của tế bào này được hình thành bởi bốn bóng bán dẫn M1 đến M4 tạo thành
hai bộ biến tần ghép chéo. Chúng có hai trạng thái ổn định, đại diện cho 0 và 1 tương
ứng. Trạng thái ổn định miễn là bật nguồn Vdd có sẵn.
Truy cập ngẫu nhiên nghĩa là bất kì một ô nhớ nào cũng đều có thể được đọc và
ghi theo bất kì thứ tự nào. Mỗi bit trong 1 thanh SRAM được chứa trong 4 transistor
tạo thành 2 cặp chéo nhau. Ơ chứa này có 2 trạng thái 0 và 1. Ngồi ra cịn 2 transistor
được sử dụng điều khiển quyền truy cập tới một ô nhớ trong quá trình đọc và ghi.
Tổng cộng, cần 6 transistor để chứa 1 bit bộ nhớ.
Truy cập tới cell được kích hoạt bởi word line (WL ở trong hình) vốn điều khiển
2 transistor truy cập M5 và M6, và khi tới lượt, điều khiển cho tới mỗi cell sẽ được kết
nối tới các đường bit: BL và BL. Đường bit được sử dụng để truyền dữ liệu cho cả hai
tác vụ đọc và ghi. Mặc dù việc có cả hai đường bit là không bắt buộc, những hầu hết
đều cung cấp cả hai để cải thiện biên nhiễu tín hiệu. Kích thước của một bộ nhớ
SRAM với m đường địa chỉ và n đường dữ liệu là 2m từ, tức 2m × n bit.

1.2.2 RAM Động


TIEU LUAN MOI download : moi nhat


Bộ nhớ truy cập ngẫu nhiên động (DRAM hay RAM động) là một loại bộ nhớ
truy cập ngẫu nhiên lưu mỗi bit dữ liệu trong một tụ điện riêng biệt trên một mạch
tích hợp. Vì các tụ điện bị rị điện tích nên thơng tin sẽ bị mất dần trừ khi dữ liệu
được nạp lại đều đặn. Đây là điểm khác biệt so với RAM tĩnh. Ưu điểm của DRAM
là có cấu trúc đơn giản: chỉ cần một transistor và một tụ điện cho mỗi bit trong khi
cần sáu transistor đối với SRAM. Điều này cho phép DRAM lưu trữ với mật độ
cao. Vì DRAM mất dữ liệu khi khơng có điện nên nó thuộc loại thiết bị nhớ tạm
thời.
DRAM thường được sắp xếp trong một mảng hình chữ nhật của một phần dự
trữ bao gồm một tụ điện và transistor cho mỗi bit dữ liệu. Hình bên phải là một ví
dụ đơn giản với ma trận 4x4. Một số ma trận DRAM có tới hàng nghìn phần.
Về cấu trúc, RAM động đơn giản hơn nhiều so với RAM tĩnh. Hình 2.5 cho
thấy cấu trúc của một thiết kế ơ DRAM thơng thường. Tất cả những gì nó bao gồm
một bóng bán dẫn và một tụ điện. Sự khác biệt lớn về độ phức tạp này tất nhiên có
nghĩa là nó hoạt động rất khác so với RAM tĩnh.
Một tế bào RAM động giữ trạng thái của nó trong tụ điệnC. Bóng bán
dẫnMđược sử dụng để bảo vệ quyền truy cập vào trạng thái. Để đọc trạng thái của
ơ, dịng truy cậpALđược ni dưỡng; điều này gây ra một dịng điện chạy trên
đường dữ liệu DLhoặc không, tùy thuộc vào điện tích trong tụ điện. Để ghi dịng
dữ liệu vào ơDLđược thiết lập thích hợp và sau đó ALđược nâng lên trong một thời
gian đủ dài để tích điện hoặc tiêu hao tụ điện.

1.3 Các Thông số của RAM
 Dung lượng
- Dung lượng RAM được tính bằng MB và GB, thông thường RAM được
thiết kế với các dung lượng 256mb,512 mb,1gb,2gb,3gb,4gb,8gb...
- Dung lượng của RAM càng lớn càng tốt cho hệ thống, tuy nhiên không phải

tất cả các hệ thống phần cứng và hệ điều hành đều hỗ trợ các loại RAM có
dung lượng lớn, một số hệ thống phần cứng của máy tính cá nhân chỉ hỗ trợ
đến tối đa 4 GB và một số hệ điều hành (như phiên bản 32 bit của Windows
XP) chỉ hỗ trợ đến 32 GB.
 BUS
Có hai loại BUS là: BUS Speed và BUS Width.
- BUS Speed chính là BUS RAM, là tốc độ dữ liệu được xử lý trong một
giây.
- BUS Width là chiều rộng của bộ nhớ. Các loại RAM DDR, DDR2, DDR3,
DDR4 hiện nay đều có BUS Width cố định là 64.
Cơng thức tính băng thơng (bandwidth) từ BUS Speed và BUS Width:
Bandwidth = (Bus Speed x Bus Width) / 8

TIEU LUAN MOI download : moi nhat


Bandwidth là tốc độ tối đa RAM có thể đọc được trong một giây. Bandwidth
được ghi trên RAM là con số tối đa theo lý thuyết. Trên thực tế, bandwidth
thường thấp hơn và không thể vượt quá được con số theo lý thuyết.

1.4 Truy cập DRAM

Một chương trình chọn vị trí bộ nhớ bằng địa chỉ ảo. Bộ xử lý chuyển địa chỉ
này thành địa chỉ vật lý và cuối cùng bộ điều khiển bộ nhớ chọn chip RAM tương
ứng với địa chỉ đó. Để chọn ơ nhớ riêng lẻ trên chip RAM, các phần của địa chỉ vật
lý được truyền dưới dạng một số dịng địa chỉ. Sẽ hồn tồn khơng thực tế nếu giải
quyết các vị trí bộ nhớ riêng lẻ từ bộ điều khiển bộ nhớ: 4GB RAM sẽ u cầu các
dịng địa chỉ. Thay vào đó, địa chỉ được mã hóa dưới dạng số nhị phân bằng cách
sử dụng một tập hợp các dòng địa chỉ nhỏ hơn. Địa chỉ được chuyển tới chip
DRAM theo cách này trước tiên phải được phân kênh. Một bộ phân kênh với N

dịng địa chỉ sẽ có 2N các dịng đầu ra. Các dịng đầu ra này có thể được sử dụng để
chọn ô nhớ. Sử dụng cách tiếp cận trực tiếp này không phải là vấn đề lớn đối với
các chip có dung lượng nhỏ
Nhưng nếu số lượng tế bào phát triển thì cách tiếp cận này khơng cịn phù hợp
nữa. Một con chip với 1Gbit6dung lượng sẽ cần 30 dịng địa chỉ và230chọn dịng.
Kích thước của bộ phân kênh tăng lên theo cấp số nhân với số lượng dịng đầu vào
khi tốc độ khơng bị hy sinh. Một bộ phân kênh cho 30 đường địa chỉ cần rất nhiều
bất động sản chip bên cạnh độ phức tạp (kích thước và thời gian) của bộ phân kênh.
Quan trọng hơn nữa là truyền tải 30 xung đồng bộ trên các đường địa chỉ khó hơn
nhiều so với việc truyền “chỉ” 15 xung. Ít dịng hơn phải được bố trí ở cùng một độ
dài hoặc thời gian thích hợp

Hình 2.7 cho thấy một chip DRAM ở mức rất cao.
Các ô DRAM được tổ chức thành các hàng và cột. Tất cả chúng đều có thể được
xếp thành một hàng nhưng khi đó chip DRAM sẽ cần một bộ phân kênh lớn. Với

TIEU LUAN MOI download : moi nhat


cách tiếp cận mảng, thiết kế có thể sử dụng một bộ phân kênh và một bộ ghép kênh
có kích thước bằng một nửa số Đây là một khoản tiết kiệm rất lớn trên tất cả các
mặt. Trong ví dụ, các dịng địa chỉa0vàa1 thơng qualựa chọn địa chỉ hàng(RAS)bộ
phân kênh chọn các dịng địa chỉ của tồn bộ hàng ô. Khi đọc, nội dung của tất cả
các ô do đó được cung cấp cholựa chọn địa chỉ cột(CAS)bộ ghép kênh. Dựa trên
các dòng địa chỉa2vàa3nội dung của một cột sau đó được cung cấp cho chân dữ
liệu của chip DRAM. Điều này xảy ra nhiều lần song song trên một số chip DRAM
để tạo ra tổng số bit tương ứng với độ rộng của bus dữ liệu
Để ghi, giá trị ô mới được đặt trên bus dữ liệu và khi ô được chọn bằng RAS và
CAS, giá trị này sẽ được lưu trữ trong ơ đó. Một thiết kế khá đơn giản. Trong thực
tế - rõ ràng là - cịn nhiều phức tạp hơn nữa. Cần có thơng số kỹ thuật về độ trễ sau

khi có tín hiệu là bao nhiêu trước khi dữ liệu có sẵn trên bus dữ liệu để đọc. Các tụ
điện không tải ngay lập tức, như được mơ tả trong phần trước. Tín hiệu từ các tế
bào rất yếu nên nó cần được khuếch đại. Để ghi, nó phải được chỉ định thời gian dữ
liệu phải có sẵn trên bus sau khi thực hiện RAS và CAS để lưu trữ thành công giá
trị mới trong ô (một lần nữa, dung lượng

1.5 Chi tiết kỹ thuật truy cập DRAM

Trong phần giới thiệu DRAM, chúng ta đã thấy rằng các chip DRAM ghép các
địa chỉ để tiết kiệm tài nguyên dưới dạng các chân địa chỉ. Chúng tôi cũng thấy
rằng việc truy cập các ô DRAM mất nhiều thời gian vì các tụ điện trong các ô đó
không phóng điện ngay lập tức để tạo ra tín hiệu ổn định; chúng tơi cũng thấy rằng
các ơ DRAM phải được làm mới. Bây giờ là lúc để tổng hợp tất cả những điều này
lại với nhau và xem tất cả những yếu tố này quyết định cách thức truy cập DRAM
diễn ra như thế nào.
DRAM đồng bộ, như tên cho thấy, hoạt động liên quan đến nguồn thời gian. Bộ
điều khiển bộ nhớ cung cấp một xung nhịp, tần số xác định tốc độ của Front Side
Bus (FSB) - giao diện bộ điều khiển bộ nhớ được sử dụng bởi các chip DRAM.
Theo văn bản này, các tần số 800MHz, 1.066MHz hoặc thậm chí 1.333MHz có sẵn
với các tần số cao hơn (1.600MHz) sẽ được công bố cho thế hệ tiếp theo. Điều này
khơng có nghĩa là tần suất sử dụng trên xe buýt thực sự cao như vậy. Thay vào đó,
các xe buýt ngày nay được bơm gấp đơi hoặc bốn, có nghĩa là dữ liệu được vận
chuyển hai hoặc bốn lần mỗi chu kỳ. Số lượng bán cao hơn nên các nhà sản xuất
thích quảng cáo xe buýt 200MHz được bơm bốn như là một xe buýt 800MHz “hiệu
quả”
Đối với SDRAM ngày nay mỗi lần truyền dữ liệu bao gồm 64 bit - 8 byte. Do
đó, tốc độ truyền của FSB là 8 byte nhân với tần số bus hiệu dụng (6.4GB / s cho
bus 200MHz được bơm bốn). Nghe có vẻ nhiều nhưng đó là tốc độ bùng nổ, tốc độ
tối đa sẽ không bao giờ vượt qua được. Như chúng ta sẽ thấy bây giờ, giao thức để


TIEU LUAN MOI download : moi nhat


nói chuyện với các mơ-đun RAM có rất nhiều thời gian chết khi khơng có dữ liệu
nào có thể được truyền. Đó chính xác là thời gian chết mà chúng ta phải hiểu và
giảm thiểu để đạt được hiệu suất tốt nhất

1.6 Giao thức truy cập đọc

Hình 2.8 cho thấy hoạt động trên một số đầu nối của mô-đun DRAM xảy ra ở ba
pha có màu khác nhau. Như thường lệ, thời gian trôi từ trái sang phải. Rất nhiều chi
tiết bị bỏ sót. Ở đây chúng ta chỉ nói về đồng hồ bus, tín hiệu RAS và CAS, địa chỉ
và bus dữ liệu. Một chu kỳ đọc bắt đầu với bộ điều khiển bộ nhớ làm cho địa chỉ
hàng có sẵn trên địa chỉ bus và hạ tín hiệu RAS. Tất cả các tín hiệu được đọc trên
cạnh lên của đồng hồ (CLK) nên khơng có vấn đề gì nếu tín hiệu khơng hồn tồn
vng miễn là nó ổn định tại thời điểm nó được đọc. Việc đặt địa chỉ hàng sẽ khiến
chip RAM bắt đầu chốt hàng được định địa chỉ. Tín hiệu CAS có thể được gửi sau
chu kỳ đồng hồ tRCD (RAS-to-CAS Delay). Địa chỉ cột sau đó được truyền bằng
cách làm cho nó có sẵn trên bus địa chỉ và hạ dòng CAS. Ở đây chúng ta có thể
thấy cách hai phần của địa chỉ (nhiều hơn hoặc ít hơn một nửa, khơng có ý nghĩa gì
khác) có thể được truyền qua cùng một bus địa chỉ.
Bây giờ việc định địa chỉ đã hoàn tất và dữ liệu có thể được truyền đi. Chip
RAM cần một thời gian để chuẩn bị cho việc này. Độ trễ thường được gọi là Độ trễ
CAS (CL). Trong Hình 2.8, độ trễ CAS là 2. Nó có thể cao hơn hoặc thấp hơn, tùy
thuộc vào chất lượng của bộ điều khiển bộ nhớ, bo mạch chủ và mô-đun DRAM.
Độ trễ cũng có thể có một nửa giá trị. Với CL = 2,5, dữ liệu đầu tiên sẽ có sẵn ở lần
đầu tiênrơiflmắt cá chân trong khu vực màu xanh.
Với tất cả sự chuẩn bị này để truy cập dữ liệu sẽ là lãng phí nếu chỉ chuyển một
từ dữ liệu. Đây là lý do tại sao các mô-đun DRAM cho phép bộ điều khiển bộ nhớ
chỉ định lượng dữ liệu được truyền. Thường thì sự lựa chọn là giữa 2, 4 hoặc 8 từ.

Điều này cho phép lấp đầy tồn bộ các dịng trong bộ nhớ đệm mà khơng cần trình
tự RAS / CAS mới. Bộ điều khiển bộ nhớ cũng có thể gửi tín hiệu CAS mới mà
khơng cần đặt lại lựa chọn hàng. Bằng cách này, các địa chỉ bộ nhớ liên tiếp có thể

TIEU LUAN MOI download : moi nhat


được đọc hoặc ghi nhanh hơn đáng kể vì tín hiệu RAS không phải được gửi đi và
hàng không cần phải hủy kích hoạt (xem bên dưới). Giữ hàng “mở” là điều mà bộ
điều khiển bộ nhớ phải quyết định. Việc cố ý để nó mở mọi lúc có bất lợi với các
ứng dụng trong thế giới thực (xem [3]).x, ở đâuxlà một giá trị như 1 hoặc 2; nó sẽ
là 1 cho các mô-đun DRAM hiệu suất cao chấp nhận các lệnh mới mỗi chu kỳ)
Trong ví dụ này, SDRAM phát ra một từ mỗi chu kỳ. Đây là những gì thế hệ
đầu tiên làm. DDR có thể truyền hai từ mỗi chu kỳ. Điều này làm giảm thời gian
chuyển nhưng khơng thay đổi độ trễ. Ở hồng tử ple, DDR2 hoạt động giống nhau
mặc dù trong thực tế, nó trơng khác nhau. Khơng cần phải đi vào chi tiết ở đây.
Cần lưu ý rằng DDR2 có thể được sản xuất nhanh hơn, rẻ hơn, đáng tin cậy hơn và
tiết kiệm năng lượng hơn (xem [6] để biết thêm thông tin)các ô DRAM phải liên
tục được làm mới sau mỗi 64ms theo đặc điểm kỹ thuật của JEDEC (Hội đồng Kỹ
thuật Thiết bị Điện tử Chung).

2. Bộ nhớ Cache
2.1 Cache là gì?

Cache hay cịn gọi là bộ nhớ đệm, bộ nhớ khay là một thành phần của cấu trúc
phân cấp của hệ thống bộ nhớ. Cache đóng vai trong trung gian, trung chuyển dữ
liệu từ bộ nhớ chính về CPU và ngược lại.

Hình 1. Vị trí của bộ nhớ cache trong hệ thống nhớ
Với các hệ thống CPU cũ sử dụng cơng nghệ tích hợp thấp, bộ nhớ cache thường

nằm ngồi CPU; với các CPU mới sử dụng cơng nghệ tích hợp cao, bộ nhớ cache
thường được tích hợp vào trong CPU nhằm nâng cao tốc độ và băng thông trao đổi
dữ liệu giữa CPU và cache.
Dung lượng của bộ nhớ cache thường nhỏ so với dung lượng của bộ nhớ chính và
bộ nhớ ngồi. Cache có tốc độ truy cập nhanh hơn nhiều so với bộ nhớ chính, đặc
biệt với cache được tích hợp vào CPU. Tuy nhiên, giá thành bộ nhớ cache (tính
theo bit) thường đắt hơn nhiều so với bộ nhớ chính.

2.2 Vai trị và ngun lý hoạt động
2.2.1 Vai Trò

Do nhớ cache là một thành phần của hệ thống nhớ phân cấp, nên vai trò của
cache tương tự như vai trò của cấu trúc phân cấp hệ thống nhớ: tăng hiệu năng hệ
thống vào giảm giá thành sản xuất. Sở dĩ cache có thể giúp tăng hiệu năng hệ thống
là nhờ cache có khả năng dung hồ được CPU có tốc độ cao và bộ nhớ chính có tốc

TIEU LUAN MOI download : moi nhat


độ thấp làm cho thời gian trung bình CPU truy nhập dữ liệu từ bộ nhớ chính tiệm
cận thời gian truy nhập cache. Ngoài ra, do cache là một loại bộ nhớ “thơng minh”
có khả năng đốn và chuẩn bị trước các dữ liệu cần thiết cho CPU xử lý nên xác
xuất CPU phải trực tiếp truy nhập dữ liệu từ bộ nhớ chính là khá thấp và điều này
cũng giúp làm giảm thời gian trung bình CPU truy nhập dữ liệu từ bộ nhớ chính.

2.2.2 Nguyên lý hoạt động của cache

Cache hoạt động dựa trên hai nguyên lý cơ bản: nguyên lý lân cận về không gian
(Spatial locality) và nguyên lý lân cận về thời gian (Temporal locality).


Hình 2. Lân cận về khơng gian trong khơng gian chương trình
Ngun lý lân cận về khơng gian có thể phát biểu như sau: “Nếu một ơ nhớ đang được
truy nhập thì xác xuất các ơ nhớ liền kề với nó được truy nhập trong tương lai gần là
rất cao”. Lân cận về khơng gian thường được áp dụng cho nhóm lệnh hoặc dữ liệu có
tính tuần tự cao trong khơng gian chương trình. Do các lệnh trong một chương trình
thường tuần tự, cache có thể đọc cả khối lệnh từ bộ nhớ chính và khối lệnh đọc được
bao phủ cả các ô nhớ lân cận (neighbour cell) của ô nhớ đang được truy nhập (current
cell).
Khác với nguyên lý lân cận về không gian, nguyên lý lân cận về thời gian chú trọng
hơn đến tính lặp lại của việc truy nhập các mẩu thông tin trong một khoảng thời gian
tương đối ngắn. Có thể phát biểu nguyên lý này như sau: “Nếu một ơ nhớ đang được
truy nhập thì xác xuất nó được truy nhập lại trong tương lai gần là rất cao”. Lân cận về
thời gian được áp dụng cho dữ liệu và nhóm các lệnh trong vịng lặp. Với các phần tử
dữ liệu, chúng được CPU cập nhập thường xuyên trong q trình thực hiện chương
trình nên có tính lân cận cao về thời gian. Với các lệnh trong vòng lặp, chúng thường
được CPU thực hiện lặp đi lặp lại nhiều lần nên cũng có tính lân cận cao về thời gian;
nếu cache nạp sẵn khối lệnh chứa cả vòng lặp sẽ phủ được tính lân cận về thời gian

TIEU LUAN MOI download : moi nhat


Hình 3. Lân cận về thời gian với việc thực hiện vòng lặp
2.2.3 Trao đổi dữ liệu giữa CPU – cache

Hình 4. Trao đổi dữ liệu giữa CPU với cache và bộ nhớ chính
CPU trao đổi dữ liệu với cache theo các đơn vị cơ sở như byte, từ và từ kép. Còn
cache trao đổi dữ liệu với bộ nhớ chính theo các khối, với kích thước 16, 32 hoặc
64 bytes. Sở dĩ CPU trao đổi dữ liệu với cache theo các đơn vị cơ sở mà không theo
khối do dữ liệu được lưu trong các thanh ghi của CPU – vốn có dung lượng rất hạn
chế. Vì vậy, CPU chỉ trao đổi các phần tử dữ liệu cần thiết theo yêu cầu của các

lệnh. Ngược lại, cache trao đổi dữ liệu với bộ nhớ chính theo các khối, mỗi khối
gồm nhiều byte kề nhau với mục đích bao phủ các mẩu dữ liệu lân cận theo không
gian và thời gian. Ngoài ra, trao đổi dữ liệu theo khối (hay mẻ) với bộ nhớ chính
giúp cache tận dụng tốt hơn băng thơng đường truyền và nhờ vậy có thể tăng tốc độ
truyền dữ liệu.
2.2.4 Các hệ số Hit và Miss

Hit (đoán trúng) là một sự kiện mà CPU truy nhập một mục tin và mục tin ấy có
ở trong cache. Xác suất để có một hit gọi là hệ số hit, hoặc H. Dễ thấy hệ số hit H
thuộc khoảng (0, 1). Hệ số hit càng cao thì hiệu quả của cache càng cao. Ngược lại,

TIEU LUAN MOI download : moi nhat


Miss (đoán trượt) là một sự kiện mà CPU truy nhập một mục tin và mục tin ấy
khơng có ở trong cache. Xác suất của một miss gọi là hệ số miss, hoặc 1-H. Cũng
có thể thấy hệ số miss 1-H thuộc khoảng (0, 1). Hệ số miss càng thấp thì hiệu quả
của cache càng cao.

2.3 Các dạng kiến trúc cache
2.3.1 Kiến trúc Look Aside

Trong kiến trúc Look Aside, cache và bộ nhớ chính cùng được kết nối vào bus
hệ thống. Như vậy, cả cache và bộ nhớ chính đều “thấy” chu kỳ bus của CPU tại
cùng một thời điểm. Kiến trúc Look Aside có thiết kế đơn giản, dễ thực hiện. Tuy
nhiên, các sự kiện hit của kiến trúc này thường chậm do cache kết nối với CPU sử
dụng bus hệ thống – thường có tần số làm việc không cao và băng thông hẹp. Bù
lại, các sự kiện miss của kiến trúc Look Aside thường nhanh hơn do khi CPU khơng
tìm thấy mục tin trong cache, nó đồng thời tìm mục tin trong bộ nhớ chính tại cùng
một chu kỳ xung nhịp.


Hình 5. Kiến trúc cache kiểu Look Aside
2.3.2 Kiến trúc Look Through

Trong kiến trúc kiểu Look Through, cache được đặt nằm giữa CPU và bộ nhớ.
Như vậy cache có thể “thấy” chu kỳ bus của CPU trước, rồi nó mới “truyền” lại cho
bộ nhớ chính. Cache kết nối với CPU bằng hệ thống bus riêng tốc độ cao và băng
thông lớn, thường là bus mặt sau (BSB – Back Side Bus). Cache kết nối với bộ nhớ
chính thông qua bus hệ thống hay bus mặt trước (FSB – Front Side Bus). FSB
thường có tần số làm việc và băng thông thấp hơn nhiều so với BSB. Kiến trúc
Look Through phức tạp hơn kiến trúc Look Aside. Ưu điểm chính của kiến trúc này
là các sự kiện hit của kiến trúc này thường rất nhanh do CPU kết nối với cache bằng
kênh riêng có tốc độ cao. Tuy nhiên, các sự kiện miss của kiến trúc Look Through
thường chậm hơn do khi CPU khơng tìm thấy mục tin trong cache, nó cần tìm mục
tin đó trong bộ nhớ chính tại một chu kỳ xung nhịp tiếp theo.

TIEU LUAN MOI download : moi nhat


Hình 6. Kiến trúc cache kiểu Look Through

2.4. Các phương pháp đọc ghi

Việc trao đổi thông tin giữa CPU – cache và giữa cache – bộ nhớ chính là một
trong các vấn đề có ảnh hưởng lớn đến hiệu năng cache. Câu hỏi đặt ra là cần có
chính sách trao đổi hay đọc ghi thông tin giữa các thành phần này như thế nào để
đạt được hệ số hit cao nhất và giảm thiểu miss.
Xét trường hợp đọc thông tin và nếu đó là trường hợp hit (mẩu tin cần đọc có
trong cache): mẩu tin được đọc từ cache vào CPU và bộ nhớ chính khơng tham gia.
Như vậy thời gian CPU truy nhập mẩu tin bằng thời gian CPU truy nhập cache.

Ngược lại, nếu đọc thơng tin và đó là trường hợp miss (mẩu tin cần đọc khơng có
trong cache): mẩu tin trước hết được chuyển từ bộ nhớ chính vào cache, sau đó nó
được đọc từ cache vào CPU. Đây là trường hợp xấu nhất: thời gian CPU truy nhập
mẩu tin bằng thời gian truy nhập cache cộng với thời gian cache truy nhập bộ nhớ
chính – cịn gọi là miss penalty (gấp đôi thời gian truy cập khi đốn trượt).
Với trường hợp ghi thơng tin và nếu đó là trường hợp hit, có thể áp dụng một
trong 2 chính sách ghi: ghi thẳng (write through) và ghi trễ (write back). Với
phương pháp ghi thẳng, mẩu tin cần ghi được lưu đồng thời ra cache và bộ nhớ
chính. Phương pháp ghi này ln đảm bảo tính nhất q dữ liệu giữa cache và bộ
nhớ chính, nhưng có thể gây chậm trễ và tốn nhiều băng thông khi tần suất ghi lớn
với nhiều mẩu tin có kích thước nhỏ. Ngược lại, với phương pháp ghi trễ, mẩu tin
trước hết được ghi ra cache và dòng cache chứa mẩu tin sẽ được ghi ra bộ nhớ
chính khi nó bị thay thế. Như vậy, mẩu tin có thể được ghi ra cache nhiều lần,
nhưng chỉ được ghi ra bộ nhớ chính một lần duy nhất, giúp tăng tốc độ và giảm
băng thông sử dụng. Phương pháp ghi trễ đang được ứng rộng rãi trong các hệ
thống cache hiện nay.

TIEU LUAN MOI download : moi nhat


Với trường hợp ghi thơng tin và nếu đó là trường hợp miss, cũng có thể áp dụng
một trong hai chính sách ghi: ghi có đọc lại (write allocate / fetch on write) và ghi
không đọc lại (write nonallocate). Với phương pháp ghi có đọc lại, mẩu tin trước
hết được ghi ra bộ nhớ chính, và sau đó dịng nhớ chứa mẩu tin vừa ghi được đọc
vào cache. Việc đọc lại mẩu tin vừa ghi từ bộ nhớ chính vào cache có thể giúp giảm
miss đọc kế tiếp áp dụng nguyên lý lân cận theo thời gian: mẩu tin vừa được truy
nhập có thể được truy nhập lại trong tương lai gần. Với phương pháp ghi không đọc
lại, mẩu tin chỉ được ghi ra bộ nhớ chính. Khơng có thao tác đọc dòng nhớ chứa
mẩu tin vừa ghi vào cache


2.5. Hiệu năng cache

Hiệu năng của cache (Cache Performance) có thể được đánh giá tổng thể theo
thời gian truy nhập trung bình của CPU đến hệ thống nhớ. Thời gian truy nhập
trung bình của một hệ thống nhớ có cache được tính như sau:

Tthời gian truy nhập trung bình hệ thống nhớ tiệm cận thời gian truy nhập cache với
trường hợp cache đạt hệ số hit cao.

2.6 Các phương pháp giảm miss cho cache
2.6.1 Các loại miss của cache

Một hệ thống nhớ với cache tốt cần đạt được các yếu tố: (1) hệ số hit cao, (2) hệ
số miss thấp và (3) nếu xảy ra miss thì khơng q chậm. Để có thể có giải pháp
giảm miss hiệu quả, ta cần phân biệt rõ các loại miss. Cụ thể, tồn tại ba loại miss
chính: miss bắt buộc (Compulsory misses), miss do dung lượng (Capacity misses)
và miss do xung đột (Conflict misses). Miss bắt buộc thường xảy ra tại thời điểm
chương trình được kích hoạt, khi mã chương trình đang được tải vào bộ nhớ và
chưa được nạp vao cache. Miss do dung lượng lại thường xảy ra do kích thước của
cache hạn chế, đặc biệt trong môi trường đa nhiệm. Do kích thước cache nhỏ nên
mã của các chương trình thường xuyên bị tráo đổi giữa bộ nhớ và cache. Theo một
khía cạnh khác, miss do xung đột xảy ra khi có nhiều dịng bộ nhớ cùng cạnh tranh
một dịng cache.

TIEU LUAN MOI download : moi nhat


2.6.2 Các phương pháp giảm miss cho cache

Trên cơ sở các loại miss đã được đề cập, hai phương pháp giảm miss có thể phối

hợp áp dụng nhằm đạt hiểu quả giảm miss tối đa, gồm: tăng kích thước dịng cache
và tăng mức độ liên kết cache. Biện pháp tăng kích thước dịng cache có thể giúp
giảm miss bắt buộc do dịng có kích thước lớn sẽ có khả năng bao phủ các mục tin
lân cận tốt hơn. Tuy nhiên, biện pháp này sẽ làm tăng miss xung đột, do dịng kích
thước lớn sẽ làm giảm số dịng cache, dẫn đến tăng mức độ cạnh tranh của các dòng
nhớ đến một dịng cache. Ngồi ra, dịng kích thước lớn có thể gây lãng phí dung
lượng cache do có thể có nhiều phần của dịng cache lớn khơng bao giờ được sử
dụng. Hiện nay, kích thước dịng cache thường dùng hiện nay là 64 bytes.
Biện pháp tăng mức độ liên kết cache hay tăng số đường cache có thể giúp giảm
miss xung đột, do tăng số đường cache làm tăng tính mềm dẻo của ánh xạ trang bộ
nhớ đến đường cache do có nhiều lựa chọn hơn. Tuy nhiên, nếu tăng số đường
cache quá lớn, có thể làm cache chậm do tăng khơng giam tìm kiếm các đường
cache. Hiện nay, số đường cache hợp lý cho miss tối ưu thường dùng là khoảng 8
đường

3. Bộ nhớ ảo
3.1. Tổng quan bộ nhớ ảo

Bộ nhớ ảo là một kĩ thuật quản lý bộ nhớ được thực hiện bởi phần mềm và phần
cứng. Nó sẽ liên kết địa chỉ ô nhớ được dùng bởi phần mềm, gọi là địa chỉ ảo, tới

TIEU LUAN MOI download : moi nhat


địa chỉ vật lý trong bộ nhớ máy tính. Bộ nhớ chính được các tác vụ coi như là
những khoảng trống có địa chỉ liên tiếp hoặc tập hợp những vùng liên tiếp. Hệ điều
hành quản lý các ô địa chỉ ảo và sự phân vùng từ ổ nhớ thực đến ổ nhớ ảo. Phần
cứng phụ trách xử lý địa chỉ nằm trong CPU, thường được gọi tên là MMU (đơn vị
quản lý bộ nhớ), sẽ tự động chuyển địa chỉ ảo sang địa chỉ vật lý. Phần mềm nằm
trong hệ điều hành có thể tạo ra những vùng địa chỉ ảo nằm mở rộng khả năng lưu

trữ vật lý của bộ nhớ và từ đó chương trình sẽ có nhiều bộ nhớ hơn thực tế máy tính
có. Lợi ích quan trọng nhất của bộ nhớ ảo là đảm nhiệm giùm các ứng dụng quản lý
vùng bộ nhớ được chia sẻ, tăng độ an toàn cho các vùng nhớ và giúp chương trình
sử dụng nhiều bộ nhớ nhiều hơn bộ nhớ vật lý mà phần cứng máy tính có, dựa trên
kĩ thuật phân trang.
Đầu vào cho bản dịch địa chỉ được thực hiện bởi MMU là một địa chỉ ảo.
Thường có rất ít – nếu có hạn chế về giá trị của nó. Địa chỉ ảo là giá trị 32 bit trên
hệ thống 32 bit và giá trị 64 bit trên hệ thống 64 bit. Trên một số hệ thống, chẳng
hạn như x86 và x86-64, các địa chỉ được sử dụng thực sự liên quan đến một mức
hướng dẫn khác: các kiến trúc này sử dụng các phân đoạn chỉ đơn giản là tạo ra
một phần bù được thêm vào mọi địa chỉ logic.
Bộ nhớ ảo khiến cho việc lập trình ứng dụng dễ dàng hơn bởi chúng làm ẩn đi sự
phân mảnh bộ nhớ vật lý, bằng cách ủy thác cho kernel hệ điều hành sự quản lý
phân cấp bộ nhớ (loại bỏ việc chương trình máy tính tự xử lý việc sử dụng chồng ô
nhớ). Mỗi khi ứng dụng sử dụng không gian bộ nhớ được chỉ định bởi ứng dụng,
bộ nhớ ảo sẽ ngăn ngừa việc phân bố lại ô nhớ hoặc cho truy cập ô nhớ có địa chỉ
ảo tương ứng.

3.2. Simplest Address Translation (Dịch địa chỉ đơn giản nhất)

Phần quan trọng của bộ nhớ ảo là dịch địa chỉ ảo sang địa chỉ thực. MMU có thể
ánh xạ lại các địa chỉ trên cơ sở từng trang. Cũng giống như khi định địa chỉ các
dòng trong bộ nhớ cache, địa chỉ ảo được chia thành các phần riêng biệt. Những
phần này được sử dụng để lập chỉ mục thành các bảng khác nhau được sử dụng
trong việc xây dựng địa chỉ vật lý

Hình 3.1: 1-Level Address Translation

TIEU LUAN MOI download : moi nhat



Hình 3.1 cho thấy các phần khác nhau của địa chỉ ảo được sử dụng như thế nào.
Phần trên cùng được sử dụng để chọn một mục nhập trong Thư mục Trang; mỗi
mục trong thư mục đó có thể là do hệ điều hành thiết lập riêng. Mục nhập thư mục
trang xác định địa chỉ của trang bộ nhớ vật lý; nhiều mục trong thư mục trang có
thể trỏ đến cùng một địa chỉ thực. Địa chỉ vật lý hoàn chỉnh của ô nhớ được xác
định bằng cách kết hợp địa chỉ trang từ thư mục trang với các bit thấp từ địa chỉ ảo.
Mục nhập thư mục trang cũng chứa một số thông tin bổ sung về trang như quyền
truy cập.
Cấu trúc dữ liệu cho thư mục trang được lưu trữ trong bộ nhớ chính. Hệ điều
hành phải cấp phát bộ nhớ vật lý liền kề và lưu trữ địa chỉ cơ sở của vùng bộ nhớ
này trong một thanh ghi đặc biệt. Các bit thích hợp của địa chỉ ảo sau đó được sử
dụng như một chỉ mục vào thư mục trang, thực chất là một mảng các mục nhập thư
mục. Ví dụ cụ thể, đây là bố cục được sử dụng cho các trang 4MB trên máy x86.
Phần Offset của địa chỉ ảo có kích thước 22 bit, đủ để giải quyết từng byte trong
một trang 4MB. 10 bit còn lại của địa chỉ ảo chọn một trong 1024 mục trong thư
mục trang. Mỗi mục nhập chứa địa chỉ cơ sở 10 bit của trang 4MB được kết hợp
với phần bù để tạo thành địa chỉ 32 bit hồn chỉnh.

3.3. Bảng trang nhiều cấp

Các trang 4MB khơng phải là tiêu chuẩn, chúng sẽ lãng phí rất nhiều bộ nhớ vì
nhiều hoạt động mà một hệ điều hành phải thực hiện yêu cầu căn chỉnh với các
trang bộ nhớ. Với các trang 4kB (tiêu chuẩn trên máy 32 bit và thường là trên máy
64 bit), phần Offset của địa chỉ ảo chỉ có kích thước 12 bit. Điều này để lại 20 bit
làm bộ chọn của thư mục trang. Ngay cả khi mỗi mục nhập chỉ có 4 byte, bảng sẽ
có kích thước 4MB. Với mỗi tiến trình có khả năng có thư mục trang riêng biệt,
phần lớn bộ nhớ vật lý của hệ thống sẽ bị ràng buộc cho các thư mục trang này.
Giải pháp là sử dụng nhiều cấp độ của bảng trang. Mức độ sau đó tạo thành một
thư mục trang lớn, thưa thớt; các vùng không gian địa chỉ không thực sự được sử

dụng khơng u cầu bộ nhớ được cấp phát. Do đó, biểu diễn nhỏ gọn hơn nhiều,
giúp có thể có các bảng trang cho nhiều quy trình trong bộ nhớ mà không ảnh
hưởng quá nhiều đến hiệu suất.

TIEU LUAN MOI download : moi nhat


Hình 3.2: Dịch địa chỉ 4 cấp

Ngày nay, cấu trúc bảng trang phức tạp nhất bao gồm bốn cấp độ. Hình 3.2 cho
thấy các sơ đồ của việc triển khai như vậy. Trong ví dụ này, địa chỉ ảo được chia
thành ít nhất năm phần. Bốn trong số các phần này là các chỉ mục trong các thư
mục khác nhau. Thư mục cấp 4 được tham chiếu bằng cách sử dụng một thanh ghi
mục đích đặc biệt trong CPU. Nội dung của thư mục cấp 4 đến cấp 2 là tham chiếu
đến thư mục cấp thấp hơn tiếp theo. Nếu một mục nhập thư mục được đánh dấu là
trống thì rõ ràng nó khơng cần phải trỏ đến bất kỳ thư mục nào dưới đây. Bằng
cách này, cây bảng trang có thể thưa và nhỏ gọn. Các mục nhập của thư mục cấp 1,
giống như trong Hình 3.1, là một phần địa chỉ vật lý, cộng với dữ liệu phụ trợ như
quyền truy cập.
Để xác định địa chỉ vật lý tương ứng với một địa chỉ ảo, trước tiên bộ xử lý xác
định địa chỉ của thư mục cấp cao nhất. Địa chỉ này thường được lưu trong sổ đăng
ký. Sau đó, CPU lấy phần chỉ mục của địa chỉ ảo tương ứng với thư mục này và sử
dụng chỉ mục đó để chọn mục nhập thích hợp. Mục nhập này là địa chỉ của thư
mục tiếp theo, được lập chỉ mục bằng cách sử dụng phần tiếp theo của địa chỉ ảo.
Quá trình này tiếp tục cho đến khi đến thư mục cấp 1, lúc này giá trị của mục nhập
thư mục là phần cao của địa chỉ vật lý. Địa chỉ vật lý được hoàn thành bằng cách
thêm các bit bù trang từ địa chỉ ảo. Quá trình này được gọi là bước đi trên cây
trang. Một số bộ xử lý (như x86 và x86-64) thực hiện thao tác này trong phần cứng,
những bộ khác cần hỗ trợ từ HĐH. Mỗi tiến trình chạy trên hệ thống có thể cần cây
bảng trang riêng của nó. Có thể chia sẻ một phần cây nhưng trường hợp này là

ngoại lệ. Do đó, nó sẽ tốt cho hiệu suất và khả năng mở rộng nếu bộ nhớ của cây
bảng trang càng nhỏ càng tốt. Trường hợp lý tưởng cho việc này là đặt bộ nhớ đã
sử dụng gần nhau trong không gian địa chỉ ảo; địa chỉ vật lý thực tế được sử dụng
khơng quan trọng. Một chương trình nhỏ có thể có được bằng cách sử dụng chỉ một
thư mục ở mỗi cấp 2, 3 và 4 và một vài thư mục cấp 1. Trên x86-64 với 4kB trang
và 512 mục trên mỗi thư mục, điều này cho phép định địa chỉ 2MB với tổng số 4
thư mục (một cho mỗi cấp). 1GB bộ nhớ liền kề có thể được giải quyết bằng một
thư mục cho cấp 2 đến 4 và 512 thư mục cho cấp 1.

TIEU LUAN MOI download : moi nhat


3.4. Tối ưu hóa bảng trang nhiều cấp

Tất cả các cấu trúc dữ liệu cho các bảng trang được lưu giữ trong bộ nhớ chính;
đây là nơi hệ điều hành xây dựng và cập nhật các bảng. Khi tạo quy trình hoặc thay
đổi bảng trang, CPU sẽ được thơng báo. Các bảng trang được sử dụng để phân giải
mọi địa chỉ ảo thành địa chỉ thực bằng cách sử dụng hướng dẫn bảng trang được
mô tả ở trên. Thông tin thêm về vấn đề: ít nhất một thư mục cho mỗi cấp được sử
dụng trong quá trình phân giải một địa chỉ ảo. Điều này yêu cầu tối đa bốn quyền
truy cập bộ nhớ (cho một lần truy cập duy nhất bởi q trình đang chạy), điều này
là chậm. Có thể coi các mục trong bảng thư mục này là dữ liệu bình thường và lưu
chúng vào bộ nhớ cache trong L1d, L2, v.v., nhưng điều này vẫn còn quá chậm. Từ
những ngày đầu tiên của bộ nhớ ảo, các nhà thiết kế CPU đã sử dụng một cách tối
ưu hóa khác. Một phép tính đơn giản có thể cho thấy rằng chỉ giữ các mục của
bảng thư mục trong L1d và bộ nhớ cache cao hơn sẽ dẫn đến hiệu suất khủng
khiếp. Mỗi phép tính địa chỉ tuyệt đối sẽ yêu cầu một số truy cập L1d tương ứng
với độ sâu của bảng trang. Các truy cập này không thể song song vì chúng phụ
thuộc vào kết quả tra cứu trước đó. Riêng điều này, trên máy có bốn cấp bảng
trang, cần ít nhất 12 chu kỳ. Thêm vào đó là xác suất bỏ lỡ L1d và kết quả là khơng

có gì mà đường dẫn lệnh có thể che giấu. Các truy cập L1d bổ sung cũng đánh cắp
băng thơng q giá vào bộ nhớ đệm.
Vì vậy, thay vì chỉ lưu vào bộ đệm các mục trong bảng thư mục, việc tính tốn
hồn chỉnh địa chỉ của trang vật lý sẽ được lưu vào bộ đệm. Vì lý do tương tự mà
mã và bộ nhớ cache dữ liệu hoạt động, việc tính tốn địa chỉ được lưu trong bộ nhớ
cache như vậy có hiệu quả. Vì phần bù trang của địa chỉ ảo khơng đóng vai trị nào
trong việc tính tốn địa chỉ trang vật lý, nên chỉ phần còn lại của địa chỉ ảo được sử
dụng làm thẻ cho bộ nhớ cache. Tùy thuộc vào kích thước trang, điều này có nghĩa
là hàng trăm hoặc hàng nghìn hướng dẫn hoặc đối tượng dữ liệu chia sẻ cùng một
thẻ và do đó cùng một tiền tố địa chỉ thực.
Bộ nhớ đệm mà các giá trị đã tính được lưu trữ được gọi là Bộ đệm xem xét bản
dịch (TLB). Nó thường là một bộ nhớ cache nhỏ vì nó phải cực kỳ nhanh. Các CPU
hiện đại cung cấp bộ đệm TLB nhiều cấp, giống như các bộ nhớ đệm khác; các bộ
nhớ đệm cấp cao hơn lớn hơn và chậm hơn. Kích thước nhỏ của L1TLB thường
được bù đắp bằng cách làm cho bộ nhớ cache được kết hợp hồn tồn với chính
sách loại bỏ LRU. Gần đây, bộ nhớ cache này đã tăng kích thước và trong quá trình
này, đã được thay đổi để được đặt thanh liên kết. Do đó, nó có thể khơng phải là
mục nhập cũ nhất bị loại bỏ và thay thế bất cứ khi nào phải thêm mục nhập mới.
Như đã lưu ý ở trên, thẻ được sử dụng để truy cập TLB là một phần của địa chỉ ảo.
Nếu thẻ có khớp trong bộ nhớ cache, địa chỉ vật lý cuối cùng sẽ được tính bằng
cách thêm phần bù trang từ địa chỉ ảo vào giá trị được lưu trong bộ nhớ cache. Đây
là một q trình rất nhanh; nó phải có vì địa chỉ vật lý phải có sẵn cho mọi lệnh sử
dụng địa chỉ tuyệt đối và, trong một số trường hợp, đối với tra cứu L2 sử dụng địa
chỉ vật lý làm khóa.

TIEU LUAN MOI download : moi nhat


3.5. Tác động của ảo hóa


Ảo hóa hình ảnh hệ điều hành sẽ ngày càng trở nên phổ biến hơn; điều này có
nghĩa là một lớp xử lý bộ nhớ khác được thêm vào hình ảnh. Ảo hóa các quy trình
(về cơ bản là nhà tù) hoặc vùng chứa hệ điều hành khơng thuộc loại này vì chỉ có
một hệ điều hành có liên quan. Các cơng nghệ như Xen hoặc KVM cho phép – có
hoặc khơng có sự trợ giúp từ quá trình thực thi các hình ảnh hệ điều hành độc lập.
Trong những tình huống này, chỉ có một phần mềm duy nhất kiểm soát trực tiếp
quyền truy cập vào bộ nhớ vật lý.

Hình 3.3:Mơ hình ảo hóa Xen

Trong trường hợp của Xen (xem Hình 4.4) Xen VMM là phần mềm đó. Tuy nhiên,
VMM khơng thực hiện nhiều điều khiển phần cứng khác. Không giống như các
VMM trên các hệ thống khác, trước đó (và phiên bản đầu tiên của Xen VMM),
phần cứng bên ngoài bộ nhớ và bộ xử lý được điều khiển bởi miền Dom0 đặc
quyền. Hiện tại, về cơ bản đây là nhân giống như nhân DomU không đặc quyền và
liên quan đến việc
xử lý bộ nhớ, chúng không khác nhau. Điều quan trọng ở đây là VMM phân phối
bộ nhớ vật lý cho các nhân Dom0 và DomU, sau đó thực hiện xử lý bộ nhớ thông
thường như thể chúng đang chạy trực tiếp trên một bộ xử lý.
Để thực hiện việc phân tách các miền cần thiết cho q trình ảo hóa hồn tất, ghi
nhớ xử lý ory trong hạt nhân Dom0 và DomU khơngkhơng phải có quyền truy cập
khơng hạn chế vào bộ nhớ vật lý. VMM không cung cấp bộ nhớ bằng cách cung
cấp các trang vật lý riêng lẻ và cho phép các hệ điều hành khách xử lý địa chỉ; điều
này sẽ không cung cấp bất kỳ sự bảo vệ nào chống lại các miền khách bị lỗi hoặc
giả mạo. Thay vào đó, VMM tạo cây bảng trang riêng cho từng miền khách và cấp
bộ nhớ bằng cách sử dụng các cấu trúc dữ liệu này. Điều tốt là có thể kiểm sốt
quyền truy cập vào thơng tin quản trị của cây bảng trang. Nếu mã khơng có các đặc
quyền thích hợp, nó khơng thể làm bất cứ điều gì. Kiểm sốt truy cập này được
khai thác trong ảo hóa mà Xen cung cấp, bất kể ảo hóa para- hay phần cứng (hay
còn gọi là đầy đủ) được sử dụng. Các miền khách xây dựng cây bảng trang của

chúng cho mỗi q trình theo cách có chủ đích khá giống đối với ảo hóa phần cứng

TIEU LUAN MOI download : moi nhat


và phần cứng. Bất cứ khi nào hệ điều hành khách sửa đổi các bảng trang của nó,
VMM sẽ được gọi. Sau đó, VMM sử dụng thơng tin cập nhật trong miền khách để
cập nhật các bảng trang bóng của chính nó. Đây là các bảng trang thực sự được sử
dụng bởi phần cứng. Rõ ràng, quá trình này khá tốn kém: mỗi sửa đổi của cây bảng
trang yêu cầu một lệnh gọi VMM. Mặc dù những thay đổi đối với ánh xạ bộ nhớ
khơng hề rẻ nếu khơng có ảo hóa, chúng thậm chí cịn trở nên đắt hơn bây giờ.
Các chi phí bổ sung có thể thực sự lớn, vì những thay đổi từ hệ điều hành khách
sang VMM và bản thân chúng đã khá tốn kém. Đây là lý do tại sao các bộ xử lý bắt
đầu có thêm chức năng để tránh việc tạo ra các bảng trang bóng. Điều này tốt
khơng chỉ vì lo ngại về tốc độ mà nó cịn làm giảm mức tiêu thụ bộ nhớ của VMM.
Số lượng công việc cần thiết cho mỗi lần sửa đổi không gian địa chỉ là một vấn đề
với hệ điều hành ảo hóa. Tuy nhiên, có một vấn đề khác cố hữu trong ảo hóa dựa
trên VMM: khơng có cách nào để có hai lớp xử lý bộ nhớ. . Cách tiếp cận Xen của
việc sử dụng một VMM riêng biệt làm cho việc xử lý tối ưu (hoặc thậm chí tốt) trở
nên khó khăn vì tất cả các phức tạp của việc triển khai quản lý bộ nhớ, bao gồm cả
những thứ “tầm thường” như khám phá các vùng bộ nhớ, phải được sao chép trong
VMM. Hệ điều hành có triển khai đầy đủ và tối ưu hóa; một người thực sự muốn
tránh sao chép chúng.

Hình 3.4:Mơ hình ảo hóa KVM

Hình 4.5 cho thấy các phần mở rộng nhân Linux KVM cố gắng giải quyết vấn đề
như thế nào. Khơng có VMM riêng biệt chạy trực tiếp trên phần cứng và kiểm soát
tất cả các khách; thay vào đó, một nhân Linux bình thường đảm nhận chức năng
này. Điều này có nghĩa là chức năng xử lý bộ nhớ hoàn chỉnh và phức tạp trong

nhân Linux được sử dụng để quản lý bộ nhớ của hệ thống. Miền khách chạy cùng
với các quy trình cấp người dùng thông thường trong cái mà người sáng tạo gọi là
"chế độ khách". Chức năng ảo hóa, ảo hóa tồn phần hoặc tồn bộ, được kiểm sốt

TIEU LUAN MOI download : moi nhat


bởi KVM VMM. Đây chỉ là một quy trình cấp người dùng khác, xảy ra để kiểm
soát miền khách bằng cách sử dụng thiết bị KVM đặc biệt mà hạt nhân thực hiện.
Lợi ích của mơ hình này so với VMM riêng biệt của mơ hình Xen là, mặc dù vẫn
có hai trình xử lý bộ nhớ hoạt động khi hệ điều hành khách được sử dụng, chỉ cần
có một triển khai, đó là trong nhân Linux. Khơng cần thiết phải sao chép cùng một
chức năng trong một đoạn mã khác như Xen VMM. Điều này dẫn đến ít cơng việc
hơn, ít lỗi hơn và có lẽ, ít ma sát hơn khi hai trình xử lý bộ nhớ chạm vào nhau vì
trình xử lý bộ nhớ trong máy khách Linux đưa ra các giả định tương tự như trình
xử lý bộ nhớ trong nhân Linux bên ngoài chạy trên phần cứng trống. Nhìn chung,
các lập trình viên phải lưu ý rằng, với việc sử dụng ảo hóa, chi phí bỏ sót bộ nhớ
cache (lệnh, dữ liệu hoặc TLB) thậm chí cịn cao hơn so với khơng ảo hóa. Bất kỳ
tối ưu hóa nào làm giảm cơng việc này sẽ mang lại hiệu quả nhiều hơn trong mơi
trường ảo hóa.

TIEU LUAN MOI download : moi nhat



×