Tải bản đầy đủ (.doc) (28 trang)

Bài tập lớn: Thiết kế bộ nhớ phân cấp

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 (311.85 KB, 28 trang )

Lời nói đầu
Khoa học kỹ thuật ngày càng phát triển kéo theo đó là những nhu cầu sử
dụng máy của con người ngày càng cao. Việc nghiên cứu và thiết kế bộ nhớ
phân cấp cũng như các thiết bị lưu trữ có vai trị đặc biệt quan trọng trong
q trình nghiên cứu thiết kế các hệ thống máy tính. Tối ưu hố được các
thành phần bộ nhớ khơng những giúp các tiến trình thực hiện của hệ thống
được thực hiện một cách hiệu quả mà còn đảm bảo giám sát được các q
trình xử lý đồng thời. Ngồi ra trong thời đại bùng nổ của công nghệ thông
tin, các thiết bị lưu trữ cũng cần phải đáp ứng được với các yêu cầu ngày
càng tăng dẫn đến sự ra đời của các công nghệ lưu trữ mới.
Với đề tài “ Thiết kế bộ nhớ phân cấp” nhóm thực hiện muốn đưa ra các
vấn đề khi phân tích, thiết kế các bộ nhớ phân cấp và mô tả các tổng quan về
các thiết bị lưu trữ và những hạn chế khi thiết kế các bộ nhớ phân cấp cũng
như các thiết bị lưu trữ.
Nhóm thực hiên:

Hồng Minh Chiến
Kiều Văn Đạt
Nguyễn Văn Minh
Trần Quang Ngun
Kiều Mạnh Thưởng
Phùng Đơn Tình


1.GIỚI THIỆU
Chắc hẳn trong chúng ta khi sử dụng máy tính đều mong muốn có được
một bộ nhớ có dung lượng lớn, tốc độ truy cập nhanh và giá rẻ. Nhưng nếu
bộ nhớ càng lớn thì tốc độ của CPU bị kìm hãm do việc truy cập bộ nhớ lâu
hơn. Một giải pháp trong vấn đề này là phân cấp bộ nhớ. Bộ nhớ đệm
(cache) được đặt vào giữa CPU và bộ nhớ chính để làm tăng tốc độ thơng
tin. Thay vì lấy thơng tin từ bộ nhớ chính CPU lấy thông tin từ bộ nhớ đệm.


Nguyên lý quy chiếu vùng (cục bộ hóa tham chiếu bộ nhớ) được sử dụng để
tăng tốc độ thao tác với thiết bị nhớ. Theo nguyên tắc này dữ liệu thường
đựơc sử dụng nằm ở vùng nhớ nhỏ sẽ truy nhập nhanh hơn. Nói cách khác
trong một khoảng thời gian ngắn CPU chỉ truy nhập các thơng tin trong một
khối nhớ cục bộ.

Hình 1: Các cấp bộ nhớ
Bộ nhớ cache được sử dụng để lưu trữ các lệnh và các dữ liệu thường
được sử dụng nhiều. Việc truy nhập đến bộ nhớ chính (RAM) chỉ xảy ra khi
khơng tìm thấy thơng tin cần trong Cache.
2. SƠ LƯỢC VỀ CACHE
Cache là mức nhớ thấp nhất trong việc phân cấp bộ nhớ nơi mà địa chỉ
của CPU chỉ tới đầu tiên. Do bộ nhớ được phân cấp nhiều mức nên đã khắc
phục được hạn chế về tốc độ của máy tính khi dung lượng nhớ tăng lên.


Khi CPU truy cập bộ nhớ có 2 khả năng xảy ra:
- Nếu từ nhớ có trong cache gọi là cache hit
- Nếu từ nhớ khơng có trong cache gọi là cache miss
CPU truy cập bộ nhớ cache theo từ nhớ, bộ nhớ chính được chia thành
các khối nhớ có kích thước bằng nhau gọi là block nhớ .
Các khối nhớ mà CPU sắp truy cập sẽ được chuyển từ bộ nhớ chính và
đặt vào bộ nhớ cache, khi đó CPU lấy thông tin từ bộ nhớ cache nhanh hơn
rất nhiều so với việc lấy từ bộ nhớ chính . Vì vậy bộ nhớ cache cịn được
gọi là bộ nhớ truy cập nhanh.
Thời gian cần phải có cho một cache miss phụ thuộc vào độ rộng băng của
bộ nhớ thời gian trễ của bộ nhớ. Thời gian trễ của bộ nhớ quyết định thời
gian tìm từ đầu tiên của block và độ rộng băng quyết định thời gian tìm phần
cịn lại của block.
Tuy nhiên không phải tất cả những objects referenced mà chương trình

cần đều ở bộ nhớ chính. Nếu máy tính có bộ nhớ ảo thì một vài objects có
thể nằm trên đĩa.
3. HOẠT ĐỘNG CỦA CACHE
Mức cache – bộ nhớ trong trong bảng các cấp bộ nhớ có cơ cấu vận hành
trong suốt đối với bộ xử lý. Với thao tác đọc bộ nhớ, bộ xử lý gửi một địa
chỉ và nhận một dữ liệu từ bộ nhớ trong. Với thao tác ghi bộ nhớ, bộ xử lý
viết một dữ liệu vào một ô nhớ với một địa chỉ được chỉ trong bộ nhớ. Để
cho chương trình vận hành bình thường thì cache phải chứa một phần con
của bộ nhớ trong để bộ xư lý có thể thâm nhậm vào các lệnh hoặc các dữ
liệu thường dùng từ bộ nhớ cache. Do dung lượng của bộ nhớ cache nhỏ nên
nó chỉ chứa một phần chương trình nằm trong bộ nhớ trong. Để đảm bảo sự
đồng nhất giữa nội dung của cache và bộ nhớ trong thì cache và bộ nhớ
trong phải có cùng cấu trúc. Việc chuyển dữ liệu giữa cache và bộ nhớ trong
là việc tải lên hay ghi xuống các khối dữ liệu. Mỗi khối chứa nhiều từ bộ
nhớ tùy thuộc vào cấu trúc bộ nhớ cache. Sự lựa chọn kích thước của khối
rất quan trọng cho vận hành của cache có hiệu quả.


Chuyển từng từ

Bộ xử lý

Chuyển từng khối

Cache

Bộ nhớ trong

Hình 2: Trao đổi dữ liệu giữa các thành phần CPU – Cache – Bộ nhớ trong
4. HẠN CHẾ CACHE MISS.

Việc giảm cache miss là rất cần thiết trong việc truy cập bộ nhớ của bộ
nhớ CPU. Nhưng thực hiện cache cần đảm bảo có những cải tiến miss
penalty (số chu kỳ dừng của bộ nhớ) có thể có ích như là cải thiện miss rate.
Đặc biệt xu hướng phát triển của công nghệ là tộc độ xử lý nhanh hơn tốc độ
truy cập DRAM. Dưới đây là năm cách tối ưu hóa:
4.1. Sử dụng cache đa mức.
Nhiều cơng nghệ giảm Cache miss ảnh hưởng đến CPU. Các công nghệ
này bỏ qua CPU mà tập trung vào giao diện giữa Cache và bộ nhớ chính.
Sự khác nhau lớn giữa tốc độ của bộ nhớ và bộ xử lý đưa đến câu hỏi
“Nên đưa cache tốc độ nhanh hơn để phù hợp với tốc độ CPU hay Cache lớn
hơn để vượt qua sự khác biệt (về tốc độ truy nhập và xử lý) giữa CPU và bộ
nhớ chính”.
Câu trả lời là cả hai giải pháp trên đều đúng. Thêm một mức Cache nữa
vào bộ Cache ban đầu và đơn giản hoá bộ nhớ. Mức thứ nhất của bộ nhớ
Cache có thể đủ nhỏ để phù hợp với tốc độ của CPU. Mức thứ hai đủ lớn đạt
được nhiều thông tin lấy từ bộ nhớ chính do đó giảm được miss penalty.
Mặc dù khái niệm thêm mức nhớ khác vào trong bộ nhớ phân cấp là đúng
đắn nhưng nó làm việc phân tích của CPU trở nên phức tạp hơn.


4.2. Critical word first - Early restart
Công nghệ Cache đa mức địi hỏi phải có phần cứng đặc biệt để giảm miss
penalty, nhưng công nghệ này không nhất thiết phải có phần cứng mạnh.
Khả năng CPU chỉ cần đủ để đọc một từ ‘word’ của một Block trong một
thời điểm. Không phải chờ cho đến khi đủ Block tải xuống trước khi gửi và
tìm kiếm ‘word’ và khởi động CPU. Có hai bước sau:
 Critical word first: Tìm miss ‘word’ đầu tiên từ bộ nhớ và gửi ngay
đến CPU, cho phép CPU tiếp tục thực hiện trong khi điền đầy Block.
Cơng nghệ này cịn có tên gọi là tìm ‘word’ trước.
 Early restart: khởi động CPU đọc ngay lập tức khơng chờ đủ cả một

khối.
Nhìn chung cơng nghệ này chỉ phù hợp với thiết kế bộ nhớ Cache có kích
thước Block đủ lớn.
4.3. Ưu tiên đọc miss
Điều này là tối ưu hố đọc trước khi ghi hồn thành. Xem xét ghi bộ đệm
với ghi xuyên qua Cache Write-through (ghi cả Cache và bộ nhớ chính).
Cách đơn giản nhất là song song đọc miss chờ đến khi bộ đệm trống. Luân
phiên kiểm tra nội dung của bộ đệm trên đọc miss và nếu ở đó khơng có
xung đột và hệ thống nhớ cho phép tiếp tục đọc miss.
4.4. Liên kết bộ đệm đọc
Công nghệ này cũng bao gồm ghi bộ đệm. Ghi xuyên qua Cache dựa vào
bộ đệm ghi, tất cả thông tin lưu trữ phải gửi đến mức kế tiếp thấp hơn trong
bộ nhớ phân cấp. Như đề cập trên, việc ghi Cache và sử dụng bộ đệm khi
Block được thay thế nếu bộ đệm ghi trống dữ liệu và tất cả các địa chỉ được
ghi lên bộ đệm. CPU tiếp tục làm việc trong khi bộ đệm ghi sẵn sàng ghi
‘word’ lên bộ nhớ. Nếu bộ đệm bao gồm Block khác, điạ chỉ có thể kiểm tra,
nếu địa chỉ của dữ liệu mới được tích hợp thì được gọi là liên kết ghi.
Nếu bộ đệm đầy CPU phải chờ cho đến khi bộ đệm được giải phóng hết.
Chú ý rằng thanh ghi vào/ra thường được tham chiếu đến không gian địa
chỉ bộ nhớ. Địa chỉ vào/ra không thể cho phép ghi liên kết.


4.5. Victim Cache
Một cách tiếp cận để có Miss penalty thấp hơn là lưu lại những dữ liệu đã
loại bỏ khỏi Cache trong trường hợp nó cần sử dụng lại.

Hình 3 - Victim Cache chỉ bao gồm các Block được loại khỏi Cache
5. GIẢM MISS RATE.
Các phương pháp truyền thống để cải thiện cách hoạt động của Cache là
giảm miss rate, có 5 kỹ thuật thực hiện việc này. Để thấu hiểu hơn các

nguyên nhân gây lỗi hãy bắt đầu với việc sắp xếp tất cả các lỗi vào một loại
đơn giản.
 Bắt buộc: sự truy cập đầu tiên đến Block khơng từ Cache vì vậy Block
được mang vào Cache. Điều đó được gọi là các lỗi tham khảo đầu
tiên.
 Dung lượng: Nếu Cache không chứa tất cả các Block cần trong quá
trình thực hiện chương trình.
 Xung đột: Nếu kế hoạch xắp xếp các Block là được thiết lập thành tổ
chức hoặc ánh xạ trực tiếp, lỗi xung đột sẽ xảy ra bởi các lỗi đã được
đưa ra và được phục hồi nếu quá nhiều Block ánh xạ tới nó được thiết
lập. Các lỗi đó cũng được gọi là sự va đập lỗi hoặc giao thoa lỗi. Điều


này lý giải rằng va chạm trong Cache liên kết đầy đủ sẽ lỗi trong Nway, Cache liên kết thiết lập là bởi có nhiều hơn N yêu cầu trong một
vài tập phổ biến.
Hình 4 mơ tả mối quan hệ thường xuyên của tỷ lệ lỗi, sự hỏng hóc bởi 3
yếu tố “C”: lỗi cưỡng bức xảy la rất nhiều trong Cache, lỗi dung lượng là
những gì xảy ra trong Cache liên kết đầy đủ, lỗi xung đột xảy ra từ trong liên
kết đủ đến liên kết 8–way, 4-way hoặc hơn nữa.
Sau đây là 4 mức xung đột:
 8-way: Lỗi va chạm bởi có sẵn
way.
 4-way: Lỗi va chạm bởi có sẵn
 2-way: Lỗi va chạm bởi có sẵn
 1-way: Lỗi va chạm bởi có sẵn
trực tiếp).

liên kết đầy đủ (không va chạm) tới 8liên kết từ 8-way đến 4-way.
liên kết từ 4-way đến 2-way.
liên kết từ 2-way đến 1-way (ánh xạ


Nếu bộ nhớ ở mức trên là quá nhỏ so với chương trình chạy và tỷ lệ phần
trăm của việc chuyển dữ liệu bị hỏng giữa 2 mức trong sự phân cấp. Bộ nhớ
phân cấp được gọi là thrash. Bởi có rất nhiều sự thay thế được yêu cầu
thrashing nghĩa là máy tính chạy ở mức độ tốc độ thấp hơn bộ nhớ có thể
chậm bởi lỗi phần mào đầu.
Các phương pháp khác nhằm cải thiện 3C là làm cho các Block lớn hơn
làm giảm các lỗi bắt buộc. Song chúng ta lại thấy Block lớn hơn lại làm tăng
một số kiểu lỗi khác. 3C làm cho ta hiểu hơn về lỗi nhưng đơn giản là nó lại
bị giới hạn, nó đưa cho ta cái nhìn rõ ràng các hoạt động trung bình song lại
khơng giải thích về từng các lỗi riêng. Ví dụ thay đổi kích cỡ Cache, các lỗi
va đập thay đổi giống như lỗi về dung lượng. Từ lúc đó kích thước Cache
liên quan đến nhiều Block hơn, theo cách đó các lỗi có thể chuyển từ lỗi
dung lượng đến lỗi va đập và làm thay đổi kích thước Cache. Chú ý rằng 3C
cũng bỏ qua các điều khoản thay thế vì thế rất khó để dập khn. Tóm lại nó
khơng có ý nghĩa đáng kể. Trong trường hợp chỉ ra nếu thay đổi cách giải
quyết có thể thực sự dẫn đến thái độ khơng qui tắc làm giảm đi lỗi trong một
liên kết rộng, điều này mâu thuẫn với 3 phương pháp (một số đề xuất dùng
vết địa chỉ để xác định sắp xếp tối ưu ngăn ngừa các lỗi sắp xếp từ phương
pháp 3C)


Rất nhiều kỹ thuật làm giảm miss rate lại làm tăng điểm lỗi và số lần va
đập. Dùng các kỹ thuật trên để giải quyết vấn đề hiện tại song phải chống lại
sự cân bằng với mục tiêu là toàn bộ hệ thống chạy nhanh hơn.

Hình 4: Mối quan hệ thường xuyên của tỷ lệ lỗi, sự hỏng hóc bởi 3 yếu tố “C”.


5.1. Kích thước Block lớn hơn

Con đường đơn giản nhất để làm giảm tỷ lệ lỗi là tăng kích thước Block
lớn hơn. Hình 5 đưa ra sự cân băng của kích thước Block với tỷ lệ lỗi cho
một thiết lập chương trình và cỡ Cache. Tăng kích thước Block sẽ làm giảm
lỗi bắt buộc. Việc giảm này xảy ra theo nguyên lý về 2 bộ phận: vị trí thời
gian và khơng gian. Tăng kích thước Block là làm tăng vị trí khơng gian.
Tại chính thời điểm đó, tăng kích thước Block làm tăng điểm lỗi cho nên
làm giảm tăng kích thước Block làm tăng lỗi va đập, thậm chí cả lỗi dung
lượng nếu Cache nhỏ. Rõ ràng chỉ có một lý do để tăng kích thước Block lại
làm tăng tỷ lệ lỗi dẫn đến điều này không làm giảm tỷ lệ lỗi nếu nó tăng thời
gian truy nhập bộ nhớ trung bình và sự tăng điểm lỗi có vẻ nặng hơn là giảm
tỷ lệ lỗi.

Hình 5: Sự cân băng của kích thước Block với miss rate cho một thiết lập
chương trình và cỡ Cache
5.2. Cache lớn hơn
Hiển nhiên giảm lỗi dung lượng làm tăng dung lượng của Cache. Mặt hạn
chế là thời gian va đập dài hơn, giá cao hơn. Kỹ thuật này được ưa chuộng


đặc biệt là trong Off-chip Cache. Kích thước của Cache L2 và L3 năm 2001
tương đương với kích thước bộ nhớ chính trong máy tính đã mơ tả phần đầu.
5.3. Liên kết cao hơn
Đầu tiên là thiết lập liên kết 8-way cho mục đích thực hành có ảnh hưởng
trong sự giảm lỗi được tính qua việc sử dung Cache liên kết đầy đủ. Có thể
thấy sự khác biệt khi so sánh 8-way tới cột lỗi dung lượng trong hình 1.4,
khi đó các lỗi dung lượng được tính qua việc sử dụng Cache liên kết đầy đủ.
Quan sát thứ 2 gọi là cache rule of thumb được tìm thấy phía bên trong của
bảng rằng Cache ánh xạ trực tiếp của kích thước N về cùng tỷ lệ lỗi như
Cache liên kết thiết lập 2-way của kích thước N/2. Nó giữ kích thước Cache
nhỏ hơn 128 Kbyte.

Để cải thiện một khía cạnh của thời gian truy nhập bộ nhớ trung bình dẫn
đến gây lãng phí các cái khác. Tăng kích thước Block giảm Miss rate lại làm
tăng điểm lỗi và các liên kết lớn hơn có thể làm tăng thời gian va đập. Kể từ
đây sức ép của việc thiết kề bộ nhớ Cache đơn tương thích với chu kỳ bộ xử
lý nhanh nhưng lại làm tăng các liên kết lợi cho điểm lỗi.
5.4. Dự đoán và giả ngẫu nhiên Cache
Một phương pháp khác làm giảm lỗi va đập và chưa duy trì tốc độ va đập
của Cache ánh xạ trực tiếp. Trong phương pháp dự đoán, các bit được thêm
vào để đoán trước việc thiết lập truy nhập của Cache kế tiếp. Dự báo này có
nghĩa là bộ ghép được thiết lập để dễ dàng cho việc lựa chọn các thiết lập
mong muốn và chỉ so sánh một Tag đơn đã được thực hiện chỉ ra chu kỳ
đồng hồ.
Các nghiên cứu liên quan được gọi là liên kết giả ngẫu nhiên hoặc liên kết
cột. Sự truy cập bắt nguồn từ bộ nhớ ánh xạ trực tiếp cho một va đập. Trên
một lỗi, trước khi đi đến mức thấp hơn của phân cấp bộ nhớ cổng của Cache
thứ 2 dược kiểm tra xem đúng không. Một cách thức đơn giản là để đảo
ngược hầu hết các bit có nghĩa của trường chỉ số để tìm ra các Block giả
ngẫu nhiên. Cache liên kết giả ngẫu nhiên có thời gian va đập lúc nhanh lúc
chậm, đáp ứng với các va đập thường xuyên và va đập ngẫu nhiên tới điểm
lỗi.
Hình 6 mơ tả số lần liên quan, mối nguy hiểm sẽ xảy ra nếu nhiều lần va
đập nhanh của bộ nhớ Cache ánh xạ trực tiếp trở nên va đập chậm trong
Cache liên kết giả ngẫu nhiên. Chất lượng sẽ bị suy giảm bởi quá trình tối ưu


này. Vì vậy nó rất quan trọng để chỉ thị cho mỗi thiết lập mà có va đập
nhanh và cái sẽ bị chậm. Một phương pháp đơn giản để tạo nhanh nội dung
thay đổi của Block. Một nguy hiểm khác là điểm lỗi có độ dài khơng đáng
kể, thêm vào thời gian kiểm tra nội dung của Cache khác.


Hình 6: Mối quan hệ giữa thời gian va chạm thường xuyên, thời gian va
chạm ngẫu nhiên và điểm lỗi.
6. GIẢM MISS PENALTY HOẶC MISS RATE QUA CƠ CHẾ SONG
SONG
Trong phần này ta đề cập tới 3 kỹ thuật chồng chéo việc thực hiện những
chỉ thị với hoạt động trong bộ nhớ phân cấp. Kỹ thuật thứ nhất tạo ra 1 bộ
nhớ phân cấp phù hợp với những bộ xử lý bị lỗi, kỹ thuật thứ hai và thứ ba
lại có thể chạy được với bất kỳ bộ vi xử lý nào. Mặc dù chỉ phổ biến trên các
máy để bàn và máy chủ song điểm nhấn vào hiệu quả vùng Chip Silicon của
máy tính có nghĩa là những kỹ thuật như thế chỉ tìm thấy trong các máy tính
nếu chúng nhỏ và nguồn điện thấp.
6.1. Cache không Block làm giảm thiểu Cache miss
Máy tính Pipeline cho phép sự hồn thiện khơng đúng cách thì CPU
khơng cần ngừng chạy trên lỗi bộ nhớ Cache. Ví dụ CPU có thể tiếp tục
tìm nạp lệnh từ bộ nhớ truy cập nhanh trong khi chờ dữ liệu thiếu. Một bộ
nhớ không khối hay bộ nhớ tự do khố kín tạo nên những tiện ích tiềm
năng của một lược đồ bằng cách cho phép bộ nhớ dữ liệu tiếp tục cung
cấp cho bộ nhớ Cache những xung đột lúc có lỗi xảy ra. Sự tối ưu của
xung đột dưới lỗi này cũng làm giảm Miss penalty hiệu quả thơng qua sự
giúp đỡ trong khi có lỗi thay vì việc bỏ qua những yêu cầu của CPU. Sự
lựa chọn tinh tế và phức tạp là ở chỗ bộ nhớ Cache có thể chồng lấp nhiều
lỗi: một sự tối ưu xung đột dưới nhiều lỗi hay lỗi dưới lỗi. Sự lựa chọn
thứ hai chỉ tốt nếu hệ thống bộ nhớ có thể cung cấp nhiều lỗi. Nhận thấy


rằng xung đột dưới lỗi làm tăng đáng kể sự phức tạp của mạch điều khiển
bộ nhớ khi có nhiều cách truy cập bộ nhớ đáng chú ý.
Khó khăn thực sự đối với ước lượng thực thi của bộ nhớ không khối là
bộ nhớ ám chỉ CPU cấp phát động. Khi một lỗi bộ nhớ khơng trì hỗn
CPU một cách cần thiết. Rất khó để đánh giá được ảnh hưởng của bất kì

lỗi đơn nào bởi thật khó để tính tốn số lần truy cập trung bình. Tóm lại
CPU có khả năng giấu điểm lỗi của bộ nhớ dữ liệu L1, lỗi mà xung đột
trong bộ nhớ L2 nhưng không có khả năng giấu một số quan trọng của lỗi
bộ nhớ L2. Việc thay đổi chương trình để dẫn lỗi L2 có thể giúp đặc biệt
đối với hệ thống bộ nhớ gửi.
6.2. Nạp phần cứng của chỉ thị và số liệu
Những bộ nhớ cache nonblock giảm một cách hiệu quả những Miss
penalty bằng cách thực hiện chồng chéo với truy cập bộ nhớ. Để có giá trị
chúng ta cần bộ xử lý cho phép những chỉ thị để thực hiện khơng theo quy
trình. Bước tiếp cận khác là để tìm nạp các mục trước khi nó được yêu cầu
bởi bộ xử lý. Cả chỉ thị dữ liệu có thể bị tìm nạp hoặc trực tiếp vào bộ nhớ
Cache hoặc vào một trong phần ngồi mà truy cập nhanh hơn. Tìm nạp
phần cứng thường được làm ngoài phần cứng của bộ nhớ Cache. Điển
hình là tìm nạp bộ xử lý 2 Block trên 1 lỗi, Block yêu cầu và Block tiếp
theo. Block yêu cầu đuợc đặt vào trong bộ nhớ Cache chỉ thị khi nó quay
lại và Block tìm nạp được đặt vào trong phần hướng dẫn. Nếu Block yêu
cầu có ở trong dịng chỉ thị thì u cầu bộ nhớ Cache cũ sẽ bị huỷ, Block
được đặt trong dòng Buffer và yêu cầu tìm nạp tiếp theo được đưa ra.
Tìm nạp phụ thuộc vào việc huy động băng thông bộ nhớ, mặt khác có
thể được sử dụng nhưng nếu nó can thiệp với những lỗi yêu cầu nó có thể
thực sự làm giảm hoạt động.
6.3. Nạp điều khiển biên dịch
Một thay đổi với tìm nạp phần cứng là cho biên dịch để có hướng dẫn
tìm nạp để u cầu dữ liệu trước khi chúng ta cần.
 Tìm nạp thanh ghi sẽ tải giá trị vào 1 thanh ghi.
 Tìm nạp Cache tải dữ liệu vào bộ nhớ Cache chứ không vào thanh
ghi.


Một trong chúng có thể bị lỗi hoặc khơng, đó là những địa chỉ gây nên

hoặc không trừ những địa chỉ ảo và bảo vệ xâm nhập. Một cách tìm nạp
hiệu quản nhất là “Vơ hình nghĩa” cho một chương trình mà nó khơng làm
thay đổi nội dung của các thanh ghi và bộ nhớ và nó cũng khơng thể gây
ra lỗi trên bộ nhớ ảo. Phần lớn các bộ xử lý ngày nay đưa ra các Cache
tìm nạp khơng lỗi. Phần này giả thiết các tìm nạp bộ nhớ Cache khơng lỗi
cũng gọi là tìm nạp khơng liên kết.
Tìm nạp có nghĩa là bộ xử lý có thể hoạt động khi dữ liệu được tìm nạp,
đó là bộ nhớ Cache không nạp nhưng tiếp tục cung cấp những chỉ thị và
số liệu cho các máy tính. Giống như tìm nạp được điều khiển bởi phần
cứng mục tiêu là để chồng lấn sự thực thi của các tìm nạp dữ liệu. Vòng
lặp là các mục tiêu quan trọng giống như chúng cho vay để tìm nạp trước.
Nếu Miss penalty nhỏ thì chương trình dịch chỉ chạy vịng một hoặc hai
lần và nó lập các kênh thực thi tìm nạp. Nếu Miss penalt rộng nó sử dụng
phần mềm Pipelining hoặc chạy nhiều lần để tìm nạp trước dữ liệu hoặc
lặp lại trong tương lai.
Những chỉ thị tìm nạp gánh chịu một phần mào đầu chỉ thị. Tuy nhiên
cần phải quan tâm để đảm bảo rằng các phần mào đầu không thể loại trừ.
Bằng cách tập trung vào tham khảo các kiểu lỗi bộ nhớ Cache chương
trình có thể loại trừ các tìm nạp khơng cần thiết trong khi cải thiện thời
gian truy nhập bộ nhớ trung bình là quan trọng.
7. GIẢM THỜI GIAN TỒN TẠI THƠNG TIN HIT TIME.
Thời gian có thơng tin trong Cache là rất quan trọng bởi nó làm ảnh hưởng
đến tỷ lệ làm việc/hoạt động của vi xử lý, trong nhiều bộ vi xử lý thời gian
truy cập bộ nhớ Cache giới hạn tỷ lệ chu kỳ hoạt động thậm chí ngay cả
những bộ vi xử lý mất nhiều chu kỳ hoạt động để truy cập bộ nhớ Cache.
Trong phần này sẽ đưa ra 4 kỹ thuật chung.
7.1. Cache nhỏ và đơn giản
Việc phân chia thời gian Cache hit được dùng chỉ số phân chia của địa chỉ
để đọc bộ nhớ thêm và sau đó so sánh nó với địa chỉ. Phần cứng bé hơn thì
nhanh hơn và một bộ nhớ Cache nhỏ chắc chắn giúp giảm thời gian. Nó

cũng rất quan trọng để giữ bộ nhớ Cache đủ nhỏ để vừa với bộ xử lý để
tránh điểm chết thời gian của việc tạm dừng làm việc Chip.


Đề nghị thứ hai là để giữ bộ nhớ Cache đơn giản sử dụng ánh xạ trực tiếp.
Một thuận lợi chính của bộ nhớ Cache là giúp cho người thiết kế có thể gối
chồng lên các Tag kiểm tra với việc truyền dữ liệu. Điều này làm giảm Hit
time có hiệu quả. Do đó, tần suất của 1 chu kỳ hoạt động nhanh thúc đẩy
thiết kết bộ nhớ Cache nhỏ và đơn giản cho những bộ nhớ Cache L1, Cache
L2.
Một tiếp cận để định nghĩa vai trò Hit time trước hết của việc xây dựng một
bộ xử lý là để dùng cơng cụ CAD CACTI, một chương trình dự đốn thời
gian truy cập của cấu trúc bộ nhớ Cache thay đổi lên những bộ vi xử lý
CMOS trong vòng 10% của những cơng cụ CAD chi tiết hơn. Vì một cỡ đặc
điểm tối thiểu như vậy, nó dự Hit time bộ nhớ cache như là phản phân loại
kích cỡ bộ nhớ Cache, liên hợp và số lượng cổng đọc/viết.
7.2. Tránh chỉ số trong quá trình dịch địa chỉ của bộ nhớ Cache
Một bộ nhớ Cache đơn giản và nhỏ cũng phải đối mặt với việc truyền tin
ảo từ CPU đến địa chỉ vật lý để truy cập bộ nhớ. Bộ xử lý xem bộ nhớ chính
như là mức khác của việc phân cấp bộ nhớ và do đó địa chỉ của bộ nhớ ảo
mà tồn tại ở đĩa phải bị ánh xạ vào trong bộ nhớ chủ.
Thông thường ta sử dụng những địa chỉ ảo cho bộ nhớ Cache, từ khi xung
đột thông thường nhiều hơn các lỗi. Những bộ nhớ Cache như vậy được gọi
là bộ nhớ Cache ảo với bộ nhớ Cache vật lý được sử dụng để định ra bộ nhớ
Cache cũ mà sử dụng địa chỉ vật lý. Như chúng ta đã tìm hiểu việc phân loại
2 nhiệm vụ là rất quan trọng: đánh chỉ số bộ nhớ Cache và so sánh các địa
chỉ. Do đó vấn đề là liệu 1 địa chỉ ảo hoặc vật lý được dùng lập hướng dẫn
bộ nhớ Cache và liệu biểu đồ ảo hoặc thực có được sử dụng trong so sánh
TagMột lý do là sự bảo vệ. Bảo vệ mức độ trong tứng trang được kiểm tra
như phần của việc dịch các địa chỉ ảo tới địa chỉ vật lý và nó phải được đảm

bảo khơng vấn đề gì.
Một giải pháp là để copy những thông tin bảo vệ từ TLB trên 1 lỗi, thêm
vào 1 miền để nắm giữ chúng và kiểm tra nó trên mọi truy cập đến bộ nhớ
Cache được có địa chỉ ảo. Một lý do khác là trong thời điểm xảy ra chuyển
mạch, những địa chỉ ảo đề cập đến những địa chỉ vật lý khác nhau, yêu cầu
bộ nhớ Cache cần năng động. Lý do thứ 3 tại sao bộ nhớ Cache ảo không
thông dụng là các hệ thống hoạt động và chương trình sử dụng có thể dùng 2
địa chỉ ảo khác nhau cho cùng một địa chỉ vật lý. Những địa chỉ đúp này gọi
là đồng nghĩa hoặc bí danh có thể ảnh hưởng đến 2 bản của cùng dữ liệu
trong 1 bộ nhớ Cache ảo, nếu một được sửa thì cái kia sẽ sai. Với 1 bộ nhớ


Cache vật lý, điều này không xảy ra từ khi những truy cập đầu tiên bị
chuyển sang khối bộ nhớ Cache vật lý.
Các giải pháp phần cứng cho vấn đề đồng nghĩa này gọi là anti-aliasing
đảm bảo mọi khối bộ nhớ Cache là địa chỉvật lý duy nhất. Phần cuối cùng
của mối quan tâm với các địa chỉ ảo là vào/ra chúng dùng các địa chỉ vật lý
và do đó sẽ yêu cầu ánh xạ các địa chỉ ảo để tác động đến Cache ảo.
Một thay đổi cả ở bộ nhớ ảo và vật lý là dùng một phần của page offset
một phần được xác định của cả hai để chỉ số bộ nhớ Cache. Tại thời điểm đó
mà bộ nhớ Cache đang bị đọc sử dụng chỉ số, phần ảo của địa chỉ đã được
dịch và Tag đúng sẽ được sử dụng trong địa chỉ vật lý.
Sự thay đổi này cho phép bộ nhớ Cache bắt đầu ngay lập tức và so sánh
Tag vẫn còn với các địa chỉ vật lý. Để giới hạn các chỉ số ảo này, các Tag vật
lý luân phiên được ánh xạ trực tiếp Cache có thể khơng lớn hơn kích thước
page. Sự tích hợp có thể giữ chỉ số trong phần vật lý của địa chỉ và vẫn chưa
hỗ trợ mở rộng dung lượng của Cache.
7.3. Truy nhập Cache Pipelined
Kỹ thuật đơn giản để Cache pipelined truy xuất do đó hiệu quả tiềm tàng
của xung đột Cache mức đầu tiên có thể là đa chu kỳ đồng hồ, đưa ra chu kỳ

thời gian nhanh và xung đột chậm. Ví dụ Pipelined cho Pentium lấy một chu
kỳ đồng hồ để truy nhập vào một chỉ thị Cache, với Pentium Pro, Pentium
III lấy 2 chu kỳ và Pentium 4 lấy 4 chu kỳ. Sự phân tách này làm tăng giai
đoạn Pipelined ảnh hưởng đến sự bất lợi trong nhánh dự đoán hoặc hơn nữa
các chu kỳ đồng hồ giữa kết quả của việc Load và sử dụng dữ liệu. Chú ý
rằng kỹ thuật này thực sự làm tăng băng thông của phần nào các chỉ thị mà
chúng làm giảm xung đột tiềm tàng trong bộ nhớ Cache.
7.4. Vết của Cache
Một thử thách trong nỗ lực tìm kiếm sự song song mức chỉ thị ngồi 4 chỉ
thị trong một chu kỳ là để cung cấp chỉ thị đầy đủ với tất cả các chu kỳ
không độc lập. Một giải pháp được gọi là Cache trace thay vì giới hạn trong
cùng một cache block tới vùng khơng gian, một Trace cache sẽ tìm một
chuỗi động của các chỉ thị kể cả các nhánh có được để tải vào Cache block.
Tên của mạch dữ liệu từ các cache block chứa các vết động của các chỉ thị
được thực thi được xác nhận bởi CPU hơn là chứa các chuỗi tĩnh của các chỉ


thị được xác nhận bởi bộ nhớ. Rõ ràng là trace cache có cơ cấu ánh xạ địa
chỉ phức tạp hơn vì vậy địa chỉ khơng dài hơn được sắp xếp tới 2 bội số của
kích thước ‘word’. Tuy nhiên chúng khơng đem lại lợi ích do khơng tận
dụng được phần chia sẻ của dữ liệu trong Cache chỉ thị. Các block dài trong
Cache qui định có thể đưa vào từ một nhánh có sẵn và do đó tỷ lệ phần chia
của block sẽ bao trùm không gian trong Cache có thể khơng lấy được.
Tương tự các block như vậy có thể thốt ra bới các nhánh có sẵn. Do đó tỷ lệ
chia của các block đó bị lãng phí . Các nhánh có sẵn như vậy hoặc các sự
thay đổi đột ngột là một trong 5 đến 10 chỉ thị. Trace cache lưu trữ các chỉ
thị chỉ từ các điểm cuối nhánh tới đầu ra của các trace do đó tránh phần mào
đầu của vết.
Mức độ của trace cache là nó lưu trữ các chỉ thị cùng loại đa tần trong chỉ
thị Cache. Các nhánh kiến tạo nên các kết quả lựa chọn khác nhau trong

cùng một chỉ thị trở thành một phần của Cache riêng rẽ bao gồm mỗi khơng
gian trong Cache.
8. BỘ NHỚ CHÍNH VÀ CÁCH TỔ CHỨC HIỆU QUẢ.
Bộ nhớ chính là mức tiếp theo trong mơ hình phân cấp. Bộ nhớ chính đáp
ứng các u cầu của Cache và phục vụ cho các giao diệ vào/ra . Nó là đích
đến của đầu vào và giống như điểm gốc của đầu ra. Hiệu quả đo được của bộ
nhớ chính được nhấn mạnh là sự trễ và băng thông (băng thông bộ nhớ là số
byte đọc và ghi được trong một đơn vị thời gian). Như truyền thống, khả
năng trễ của bộ nhớ chính là mối quan tâm chính của Cache trong khi băng
thơng của bộ nhớ chính lại là mối quan tâm của thiết bị ngoại vi và bộ vi xử
lý.
Mặc dù các Cache được quan tâm ở đây là làm trễ chậm bộ nhớ. Xong hầu
hết lại dễ dàng tăng băng thông của bộ nhớ với một cách tổ chức mới làm
giảm các trễ. Phổ biến các Cache ở mức L2 và kích thước các Block của
chúng lớn hơn dễ dàng đạt được việc tăng băng thơng bộ nhớ một cách
thuận lợi. Có thể tổ chức lại bộ nhớ làm giảm khe hở giữa CPU-DRAM
bằng cách đơn giản tạo các Cache lớn hơn hoặc thêm nhiều mức Cache khác
nhau có thể là một cách sinh lợi và giảm thiểu khe hở nói trên. Sáng kiến tổ
chức lại bộ nhớ chính là rất cần thiết. Trong phần này chúng ta sẽ nghiên cứu
cách thức tổ chức bộ nhớ để tăng băng thông.


Giả sử ta cho rằng hiệu quả của việc tổ chức lại bộ nhớ chính là:
 4 chu kỳ đồng hồ cho việc gửi địa chỉ.
 56 chu kỳ đồng hồ cho thời gian truy nhập của một ‘word’.
 4 chu kỳ đồng hồ cho gửi một ‘word’ dữ liệu.
Cho trước một Block 4 ‘word’, 1 ‘word’ bằng 8 byte, Miss penalty là
4x(4+56+4) hoặc 256 chu kỳ đồng hồ với băng thông bộ nhớ là 1/8 byte
(32/256) trên chu kỳ đồng hồ. Giá trị đó trong trường hợp lỗi. Hình 1.9 cho
thấy một vài tuỳ chọn của các bộ nhớ nhanh. Ba giải pháp tiếp theo cho rằng

là kỹ thuật bộ nhớ chung.

Hình 9: Ba ví dụ về độ rộng của Bus, độ rộng bộ nhớ xen để đạt được băng
thông bộ nhớ rộng hơn (a) là thiết kế đơn giản nhất với độ rộng của ‘word’
là rất nhiều (b) mở rộng bộ nhớ, Bus L2 hẹp hơn L1, trong khi (c) cho thấy
Bus và Cache hẹp với bộ nhớ xen.
8.1. Mở rộng bộ nhớ chính
Cache lớp đầu tiên thường được tổ chức với độ rộng vật lý bằng 1 ‘word’
bởi hầu hết các CPU truy nhập cũng vậy. Hình 1.9 (a) cho thấy sự tăng gấp
đôi hay gấp bốn của Cache và bộ nhớ cũng sẽ làm tăng tương tự đối với
băng thơng bộ nhớ. Với bộ nhớ chính có độ rộng 2 ‘word’ thì Miss penalty
sẽ rơi vào khoảng từ 4 đến 64 hoặc 256 chu kỳ đồng hồ và độ rộng 2 ‘word’


thì Miss penalty sẽ rơi vào khoảng từ 14 đến 64. Băng thơng khi đó là 1/4
byte trên chu kỳ đồng hồ tại độ rộng là 2 ‘word’ và 1/2 byte trên chu kỳ
đồng hồ tại độ rông là 4 ‘word’.
Đó là chi phí cho đường kết nối rộng giữa CPU và bộ nhớ, điển hình được
gọi là bộ nhớ Bus. CPU vẫn truy nhập vào Cache qua 1 ‘word’ vì thế nó
khơng cần bộ ghép giữa Cache và CPU và bộ ghép ấy có thể nằm trên luồng
cảnh báo định thời. Cache L2 có thể được trợ giúp từ bộ ghép giữa L1 và 2
của Cache không trên luồng cảnh báo.
Khi bộ nhớ chính được mở rộng, mặt hạn chế là việc tăng lên thấp nhất là
gấp đôi hay 4 là độ rông tăng gấp đôi hay 4. Thêm vào đó bộ nhớ với phần
kiểm tra lỗi gặp khó khăn trong việc ghi dữ liệu tới các phần chia của các
khối bảo vệ, giống như các byte.
Sự dừng lại của dữ liệu phải được đọc vì vậy các mã lỗi mới có thể được
tính tốn và lưu lại khi dữ liệu ghi. Nếu việc kiểm tra lỗi được thực hiện trên
tồn băng thơng, độ rộng của bộ nhớ sẽ bị giảm tần số như trình tự “Read
modifywrite” bởi vì phần ghi thêm chỉ là một phần cần ghi. Rất nhiều thiết

kế cho việc mở rộng bộ nhớ có phần kiểm tra bộ nhớ riêng rẽ trên mỗi
‘word’ và hầu hết là như vậy.
8.2. Bộ nhớ xen lẫn đơn giản
Tăng kích thước là một biện pháp để cải thiện băng thơng, xong cịn có
cách khác để cải thiện trễ song song bằng cách sử dụng nhiều Chip trong hệ
thống bộ nhớ, Chip nhớ có thể được tổ chức thành các băng để đọc và ghi
một lúc nhiều ‘word’ tại một thời điểm hơn là chỉ 1 ‘word’. Cuối cùng mục
đích của bộ nhớ xen là làm cải thiện trễ trong băng thông bộ nhớ của tất cả
các Chip trong hệ thống, trái lại hầu hết các hệ thống nhớ chứa các ‘word’
được yêu cầu. Có 2 nguyên lý ảnh hưởng đến khả năng của bộ nhớ hệ thống,
ảnh hưởng đến các quyết định khác nhau phụ thuộc trên quan hệ quan trọng
của khả năng chống lại sự thực thi đó.
Vì Bank có độ rộng là 1 ‘word’ cho nên độ rộng của Cache và Bus là
không thay đổi nhưng địa chỉ gửi tới một số Bank cho phép đọc một cách
đồng thời. Hình 1.9(c) mơ tả cách tổ chức.


Hình 10: Bộ nhớ 4 đường riêng rẽ
Mục tiêu của hệ thống nhớ là đưa ra các thông tin từ mỗi Bank, chu kỳ
đồng hồ tới các truy xuất liên tiếp. Để xem tại sao có cơng thức đó hình
dung chỉ có hơn một vài Bank so với chu kỳ đồng hồ để truy cập bộ nhớ một
từ 64 bit. 8 Bank với một lần truy cập của 10 chu kỳ đồng hồ. Sau 10 chu kỳ
CPU sẽ lấy 1 ‘word’ Bank 0, sau đó Bank 0 sẽ tác động đến ‘word’ mà nó
muốn bởi vì CPU đã nhận 7 ‘word’ tại 7 Bank khác. Tại chu kỳ 18, CPU sẽ
đứng tại cửa của Bank 0 đợi ‘word’ tiếp theo. CPU sẽ đợi cho đến khi chu kỳ
20 xuất hiện. Kể từ đây chúng ta muốn nhiều Bank hơn chu kỳ đồng hồ để
không phải đợi.
Tuy nhiên dung lượng của Chip nhớ tăng lên có một số Chip có cùng kích
thước với bộ nhớ, nên việc tạo ra Bank là lãng phí. Ví dụ bộ nhớ chính
512MB giữ 256 Chip nhớ của 4MB (4bit) dễ dàng được tổ chức thành 16

Bank của 16 Chip nhớ. Tuy nhiên nó có chỉ 16x64MB (4bit) Chip nhớ cho
64MB tạo nên một Bank giới hạn. Rất nhiều nhà sản xuất muốn có một bộ
nhớ tuỳ chọn dựa trên phương thức cơ bản này. Việc có số Chip là điểm
khơng thuận lợi trong Bank bộ nhớ xen. Chip được tổ chức với các đường
rộng hơn như 16M x 16bit.
Điểm không thuận lợi thứ 2 của Bank nhớ là khó mở rộng bộ nhớ. Hệ
thống bộ nhớ này phải hỗ trợ sự ra đời của các Chip nhớ hoặc thay đổi điều
khiển bộ nhớ xen dựa trên kích thước vật lý của bộ nhớ, hoặc cả hai.
8.3. Bank bộ nhớ độc lập
Nguồn gốc sự thúc đẩy cho việc tăng Bank nhớ băng thông cao hơn bởi
truy nhập liên tục xen rẽ. Phần cứng thì khơng khó quá bởi Bank có thể chia
sẻ địa chỉ đường với điều khiển bộ nhớ cho phép mỗi Bank chia dữ liệu của
Bus nhớ.


Tổng quát hoá của xen rẽ là cho phép nhiều truy nhập độc lập, nơi có
nhiều bộ điều khiển bộ nhớ cho phép Bank hoạt động độc lập. Mỗi Bank cần
địa chỉ đường riêng biệt và có thể Bus dữ liệu riêng. Ví dụ các thiết bị đầu
vào có thể dùng một bộ điều khiển và 1 Bank, đọc Cache thì dùng cái khác,
ghi Cache lại dùng cái khác nữa. Như thiết kế chỉ tạo một chiều với Bank
nhớ, nếu khơng thì nhiều nơi đọc chỉ được hỗ trợ bởi 1 cổng bộ nhớ và chỉ
mang lại lợi ích nhỏ trong sự truy nhập chồng lấp khi truyền. Đa xử lý sẽ
chia sẻ các bộ nhớ chung để cung cấp thêm các Bank nhớ.
9. CÔNG NGHỆ BỘ NHỚ
Các vấn đề chính của cơng nghệ bộ nhớ:
1. Access time: thời gian kể từ khi có yêu cầu cho đến khi nhận được dữ
liệu.
2. Cycle time: Khoảng thời gian cho phép tối thiểu giữa 2 lần đọc dữ
liệu.
9.1. Công nghệ DRAM (Dynamic RAM)

Đây là bộ nhớ chính cho các máy tính (Desktop và Server). Được thiết kế
dưới dạng ma trận trong đó, một phần (1/2) số bit trong địa chỉ ô nhớ là chỉ
số hàng và phần còn lại là cột. Việc đọc dữ liệu được chia thành 2 bước:
RAS (Row Access Strobe) và CAS (Column Access Strobe). DRAM sử
dụng một Transistor cho 1 bit dữ liệu.
Khi dữ liệu được đọc dữ liệu ô nhớ bị mất và phải “nạp lại”. Dữ liệu cũng
phải được khôi phục lại do “mất năng lượng” tối thiểu là 8 ms. Theo quy
luật Amdahl: dung lượng của bộ nhớ nên tăng tuyến tính với tốc độ của
CPU: 1.000 MIPS (Milion Instruction Per Second) nên có 1.000 Megabyte
bộ nhớ. Tốc độ của DRAM tăng chậm.
9.2. Công nghệ SRAM (Static RAM)
DRAM địi hỏi dữ liệu phải được khơi phục sau khi đọc nhưng SRAM thì
khơng (do thường sử dụng 3 Transistor để lưu 1 bit). SRAM chỉ cần ít năng
lượng để lưu thơng tin  khơng địi hỏi phải Refresh dữ liệu nhiều như
DRAM (do ít bị mất năng lượng).
DRAM được thiết kế để phục vụ bài toán dung lượng/giá thành cịn
SRAM thì phục vụ bài tốn dung lượng/tốc độ. SRAM không sử dụng cách


đánh địa chỉ nhân bội (Multiplexor). SRAM nhanh hơn nhưng đắt hơn
DRAM.
9.3. Công nghệ bộ nhớ xử lý nhúng
Thường được dùng cho máy tính nhúng. Có 2 đại diện cơ bản là ROM và
Flash Memory. ROM được ghi vào thời điểm sản xuất, sử dụng 1 transistor
cho 1 bit thông tin. Dữ liệu ghi trên ROM khơng bị “thất thốt” và cũng
không bị phá hủy. Với Flash Memory dữ liệu có thể được thay đổi sau khi
sản xuất nhưng khơng bị mất trong q trình sử dụng. Nó có tốc độ đọc
tương đương với DRAM nhưng tốc độ ghi chậm hơn (10-100 lần).
9.4. Các phương pháp tăng tốc độ của bộ nhớ trong Chip DRAM chuẩn
 Fast Page Access: Sử dụng bộ đệm bit (theo hàng).

 Synchronous DRAM (SDRAM): Tối ưu truy nhập giữa DRAM và bộ
điều khiển bộ nhớ qua kỹ thuật đồng bộ, có thanh ghi (có khả năng lập
trình) để ghi số byte cần phải đọc và nhờ đó có thể gửi nhiều byte
trong một số xung nhịp với mỗi một yêu cầu.
 DDR - Double Data Rate: Truyền dữ liệu theo cạnh lên và xuống của
xung nhịp đồng hồ DRAM (nhân 2 tốc độ).
Các kỹ thuật trên đều được thực hiện trên nguyên lý băng thông bộ nhớ
bằng cách bổ sung các phép tính logic, chấp nhận tăng một chút về giá thành
để có được kết quả tốt đáng kể về băng thông.
9.5. Tăng tốc độ của bộ nhớ bằng giao diện DRAM mới - RAMBUS
Hoạt động như một hệ thống nhớ thay vì như một thành phần nhớ: mỗi
một Chip được cấy thêm một giao diện tốc độ cao. Thế hệ RAMBUS thứ
nhất đã thay thế RAS/CAS bằng một Bus cho phép sử dụng trong thời gian
từ khi gửi địa chỉ cho đến khi nhận dữ liệu (RDRAM). Thế hệ RAMBUS
thứ hai (Direct - DRDRAM) sử dụng Bus lệnh riêng cho truy nhập hàng, cột
thay vì sử dụng phương pháp Multiplex thơng thường.
10. BỘ NHỚ ẢO
10.1. Yêu cầu ra đời bộ nhớ ảo
Máy tính chạy nhiều tiến trình với bộ nhớ riêng. Chi phí q lớn nếu giành
tồn bộ khơng gian địa chỉ nhớ của máy tính (tồn bộ các địa chỉ) cho một


tiến trình trong khi thực ra, các tiến trình thường sử dụng một phần (đôi khi
là rất nhỏ) không gian đia chỉ chớ của máy. Điều đó dẫn đến yêu cầu cần
phải có một cơ chế chia sẻ các phần nhỏ của bộ nhớ vật lý cho các tiến trình.
Một trong các lựa chọn là bộ nhớ ảo - chia bộ nhớ thành các khối và phân
phối cho các tiến trình. Điều này đã dẫn đến một yêu cầu về mơ hình bảo vệ,
giới hạn các tiến trình chỉ truy nhập phần bộ nhớ của mình.
Mặc dù việc sử dụng bộ nhớ ảo là thiết yếu đối với các máy tính ngày nay,
việc chia sẻ bộ nhớ khơng phải là nguyên nhân chính dẫn đến việc ra đời bộ

nhớ ảo. Ngun nhân chính như sau:
 Nếu chương trình lớn hơn bộ nhớ vật lý  lập trình viên phải tìm
cách chia chương trình thành các phần nhỏ, và nạp, thực hiện và giải
phóng các phần này tùy theo yêu cầu của chương trình.
 Lập trình viên phải chắc chắn rằng chương trình khơng bao giờ thử sử
dụng bộ nhớ lớn hơn bộ nhớ vật lý của một máy tính cụ thể
 Các Overlay phải được nạp vào thời diểm đúng đắn…
 Bộ nhớ ảo được thiết kế để giải phóng nhà lập trình khỏi vấn đề này:
Tự động quản lý 2 mức của cấu trúc phân cấp bộ nhớ: bộ nhớ chính
và bộ lưu trữ thứ cấp.

Hình 11: Chương trình cùng với không gian bộ nhớ ảo liên tục ở bên trái
bao gồm 4 trang A, B,C, D và vị trí thực sự của chúng: trong bộ nhớ vật
chính (A, B,C) và trên ổ đĩa (D)


10.2. Mơ tả bộ nhớ ảo
Bộ nhớ ảo có nhiều điểm tương đồng với bộ nhớ Cache:
 Page, Segment tương đương với Block
 Page fault hoặc Address fault tương đương với Cache miss
CPU thực hiện dịch địa chỉ ảo sang địa chỉ vật lý nằm trong bộ nhớ chính.
Sự thay thế các trang địa chỉ ảo được thực hiện bởi hệ điều hành. Không
gian địa chỉ của CPU quyết định kích thước của bộ nhớ ảo. Bộ nhớ ảo có thể
bao gồm các khối có kích thước cố định (page) hoặc các khối có kích thước
khác nhau (segment)
Việc sử dụng bộ nhớ với các khối có kích thước cố định hay không ảnh
hưởng đến thiết kế của CPU. Một số máy tính ngày nay được thiết kế theo
hướng lai ghép giữa segment và page trong đó có hướng các page có kích
thước nhân bội của kích thước nhỏ nhất.
a. Block có thể được đặt ở những đâu trong bộ nhớ chính:

Hệ điều hành cho phép đặt bộ nhớ ở bất kỳ vị trí nào trong bộ nhớ chính.
b. Làm thế nào để tim được một block trong bộ nhớ chính:
Phương pháp phân trang hay phân đoạn đều dựa trên một cấu trúc dữ liệu
được đánh chỉ số theo số (định danh) của trang hoặc đoạn. Cấu trúc dữ liệu
này chứa địa chỉ vật lý của block. Đối với phương pháp phân đoạn, địa chỉ
offset được cộng vào địa chỉ vật lý của segent để có được địa chỉ vật lý thực
sự.


Hình 12:Ánh xạ địa chỉ ảo sang địa chỉ vật lý thông qua bảng chỉ số trang
Cấu trúc dữ liệu chứa địa chỉ vật lý của page (thường được lấy từ bảng các
page). Số phần tử của trang tương ứng với số trang trong vùng khơng gian
địa chỉ ảo. Ví dụ: Nếu ta có 32 bit địa chỉ ảo với 4KB một trang và 4 byte
cho một phần tử thì kích thước của bảng page là (232/212)x22 = 222 hay 4MB.
Để giảm kích thước của bảng này, một số máy tính đã áp dụng hàm “băm”
để đánh địa chỉ ảo. Phương pháp này cho phép cấu trúc dự liệu là số các
trang vật lý trong bộ nhớ chính. Số này có thể nhỏ hơn nhiều so với số trang
ảo. Ví dụ: Nếu có 512MB bộ nhớ vật lý thì chỉ cần 1MB (8x512MB/4 KB)
để làm bảng các trang. 4 byte bổ sung được sử dụng cho địa chỉ ảo.
Kiến trúc HP/IA-64 cho phép sử dụng cả phương pháp truyền thống và
phương pháp nghịch đảo nên các nhà lập trình hệ điều hành có thể lựa chọn
một trong 2 phương pháp này.
c. Cách thay thế các khối khi khơng tìm thấy địa chỉ:
Hệ điều có nhiệm vụ giảm tối đa lỗi page fault (khơng tìm thấy trang) nên
hầu hết các hệ điều hành đều hướng việc thay thế dựa trên nguyên tắc thay
thế khối được sử dụng ít nhất (LRU - Least-Recent Used).
Một số bộ xử lý cho phép sử dụng 1 bit để mô tả việc khối được sử dụng
hay không và hệ điều hành theo chu kỳ sẽ đặt lại bit đó về 0. Bằng cách này,



hệ điều hành có thể theo dõi được mức độ sử dụng của các trang để đưa ra
quyết định thay thế.
d. Việc ghi dữ liệu được thực hiện như thế nào:
Do tốc độ của đĩa cứng quá chậm so với bộ nhớ chính nên tất cả các bộ xử
lý đều sử dụng phương pháp ghi trả sau (Write-back). Ngoài ra, bộ xử lý còn
sử dụng ‘Dirty bit’ để xác định xem vùng nhớ đó có bị thay đổi khơng để ra
quyết định ghi thông tin lên đĩa (khi block bị thay thế).
10.3. Các kỹ thuật dịch nhanh (từ địa chỉ ảo sang địa chỉ vật lý)
Việc sử dụng trang nhớ đồng nghĩa với việc truy nhập bộ nhớ dài gấp đơi
bình thường do phải thực hiện hai động tác: Một lần để lấy được địa chỉ vật
lý và một lần nữa để truy nhập ô nhớ.
 Một phương án giải quyết là lưu lại lần diễn dịch cuối cùng và việc
ánh xạ sẽ được bỏ qua nếu địa chỉ truy nhập có trang giống trang vừa
được dùng.
 Mộ phướng án chung hơn là sử dụng nguyên tắc địa phương hoá (như
trong việc sử dụng bộ nhớ phân cấp Cache) bằng cách lưu lại các
thông tin về diễn dịch địa chỉ trong một vùng Cache đặc biệt
Translation Look-aside Buffer (TLB) hoạt động theo nguyên tắc của
bộ nhớ Cache.
10.4. Lựa chọn kích thước trang nhớ
Một tham số quan trọng về kiến trúc máy tính là kích thước của một trang
nhớ. Lựa chọn này liên quan đến các xu hướng lựa giữa kích thước của một
trang nhớ là lớn hay nhỏ. Các lợi ích khi dùng kích thước trang nhớ lớn:
 Cho phép sử dụng Cache lớn hơn và có chỉ số Cache hit cao.
 Có hiệu quả hơn khi di chuyển các trang lớn từ bộ nhớ thức cấp đến
bộ nhớ chính và ngước lại.
 Do số lượng hạn chế của TLB mà việc sử dụng các trang lớn khiến
cho việc ánh xạ địa chỉ có hiệu quả hơn, giảm được số lần TLB miss.
Các lợi ích khi dùng kích thước trang nhớ nhỏ là tiết kiệm bộ nhớ do giảm
được số lượng các vùng nhớ phân mảnh. Các thiết kế bộ xử lý gần đây đã

chuyển sang hỗ trợ trang nhớ có kích thước trang khác nhau.


×