1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÀI tập lớn KIẾN TRÚC máy TÍNH NÂNG CAO

17 538 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 399,5 KB

Nội dung

Địa chỉ trang ảo của một truy cập bộ nhớ được dùng để xác định chỉ mục trong TLB; nếu địa chỉ trang ảo đó đúng là có trong TLB tức nếu gặp một TLB hit, thì TLB sẽ nhanh chóng hồi đáp một

Trang 1

BÀI TẬP LỚN KIẾN TRÚC MÁY TÍNH NÂNG CAO

Đề số 9:

High-Bandwidth Address Translation for Multiple-Issue Processors (của Todd M Austin & Gurindar S Sohi)

Học viên thực hiện: Phạm Hoàng Dũng

Mã số học viên: 09070427 Giáo viên hướng dẫn: TS Đinh Đức Anh Vũ

1 Tóm lược:

Phiên dịch địa chỉ (address translation) là một cơ cấu tối quan trọng trong các hệ thống máy

tính ngày nay Quá trình này cung cấp cho hệ điều hành những cơ cấu ánh xạ và bảo vệ cần thiết

để quản lý được nhiều không gian địa chỉ lớn và riêng tư trong chỉ một bộ nhớ vật lý có kích thước giới hạn Trong thực tế, hầu hết các bộ vi xử lý đều hiện thực một cơ cấu phiên dịch địa

chỉ độ trễ thấp bằng một bộ đệm dịch nhìn thêm (translation lookaside buffer _ TLB) TLB là một thứ cache, thường là loại kết hợp cao (highly-associative), chứa các mục dữ liệu (entry)

trong bảng trang bộ nhớ ảo mô tả địa chỉ vật lý của một trang bộ nhớ ảo và các quyền truy cập và

tình trạng tham chiếu của nó (tức là các reference bit và dirty bit) Địa chỉ trang ảo của một truy

cập bộ nhớ được dùng để xác định chỉ mục trong TLB; nếu địa chỉ trang ảo đó đúng là có trong TLB (tức nếu gặp một TLB hit), thì TLB sẽ nhanh chóng hồi đáp một kết quả phiên dịch Nếu

gặp một tham chiếu trúng TLB (TLB miss), một bộ xử lý miss bằng phần cứng hoặc phần mềm

sẽ được gọi đến để duyệt qua các bảng trang bộ nhớ ảo nhằm xác định kết quả phiên dịch nào đúng để nạp vào TLB

Mục tiêu chính của việc thiết kế TLB là giữ cho độ trễ phiên dịch địa chỉ cách xa đường tới

hạn truy cập bộ nhớ Trong quá khứ, người ta đã đạt được mục tiêu này bằng cách tạo ra các TLB

độ trễ thấp (low-latency TLB) Công việc này tương đối dễ thực hiện, bởi vì hầu hết các kiểu

TLB đều đơn cổng và nhỏ, chứa dữ liệu lần lượt trên 32 mục của nó

Để cố gắng làm tăng hiệu năng hệ thống, các kiểu thiết kế vi xử lý đời mới đang liên tục khai

thác các mức độ song song ở mức-lệnh (instruction-level parallelism _ ILP) cao hơn, khiến yêu cầu về thông lượng (bandwidth) đối với cơ cấu dịch địa chỉ (address translation mechanism) tăng

lên Bản chất của khối lượng công việc cũng đang thay đổi, có khuynh hướng sử dụng mã lệnh

có các tập dữ liệu lớn và tính lân cận (locality) thấp, làm cho tỷ lệ tham chiếu trúng TLB (TLB

hit rate) thấp (Ví dụ như trong những môi trường cho phép đa nhiệm, lập trình đa luồng và các ứng dụng đa phương tiện) Hầu hết các kiểu vi xử lý hiện nay đều đáp ứng yêu cầu này bằng một

TLB đa-cổng (multi-ported) Tuy giải pháp này có tỷ lệ tham chiếu trúng rất tốt tại mỗi cổng,

nhưng khi số cổng tăng lên thì độ trễ và diện tích của nó tăng rất nhanh Khi yêu cầu về thông

Trang 2

lượng tiếp tục gia tăng, các kiểu đa-cổng sẽ nhanh chóng ảnh hưởng xấu đến độ trễ truy cập bộ nhớ Do đó, cần phải có những cơ cấu phiên dịch địa chỉ mới, tốt hơn

Các tác giả bài báo đề xuất bốn cơ cấu phiên dịch địa chỉ thông lượng cao (high-bandwidth),

có những đặc tính về độ trễ và diện tích tốt hơn so với kiểu TLB đa cổng đơn giản nói trên Họ

mở rộng các kỹ thuật thiết kế bộ nhớ thông lượng cao truyền thống dành cho phiên dịch địa chỉ,

xây dựng các kiểu TLB đan xen (interleaved) và đa mức (multi-level) Ngoài ra, họ giới thiệu hai

kiểu mới, được sáng chế đặc biệt cho phiên dịch địa chỉ thông lượng cao, đó là các kiểu TLB có

cổng ăn theo (piggyback port) và có cơ cấu phiên dịch trước (pretranslation).

Mục tiêu của các kiểu cơ cấu phiên dịch mới này là phiên dịch các truy cập bộ nhớ dữ liệu

vào các cache được lập tag vật lý (physically tagged) Còn phiên dịch lấy lệnh (instruction fetch

translation) là một vấn đề dễ dàng hơn nhiều, bởi vì cơ cấu lấy lệnh thường bị hạn chế là tất cả các lệnh được lấy trong một chu kỳ duy nhất phải ở trong cùng một trang bộ nhớ ảo, chỉ cần nhiều nhất là một cuộc phiên dịch trong mỗi chu kỳ Nó có thể được giải quyết dễ dàng bằng một

kiểu TLB lệnh đơn cổng hoặc bởi một micro-TLB nhỏ, được hiện thực trên một TLB thống nhất

dành cho dữ liệu và lệnh

Các tác giả đánh giá các kiểu thiết kế mới của mình bằng cách thực hiện những thử nghiệm bao quát dựa trên mô phỏng Họ lần lượt thay đổi các thông số chính của hệ thống, chẳng hạn

như kiểu bộ xử lý, kích thước trang, và số lượng thanh ghi kiến trúc (architected register), để

xem xét ảnh hưởng của các thay đổi này đối với phẩm chất tương đối của mỗi kiểu thiết kế đó

2 Ảnh hưởng của phiên dịch địa chỉ lên hiệu năng hệ thống

Trước hết, các tác giả xây dựng một mô hình để đo hiệu năng của phiên dịch địa chỉ một cách định tính, được dùng như một thứ khung sườn chung cho cơ cấu phiên dịch địa chỉ Họ xây dựng các cơ cấu phiên dịch địa chỉ mới dựa theo khung sườn này để dễ dàng thấy được những tính năng nào ảnh hưởng đến hiệu năng phiên dịch địa chỉ, và do đó thấy được hiệu năng phiên dịch địa chỉ ảnh hưởng như thế nào đối với hiệu năng hệ thống

Hình 1 minh họa khung sườn dành cho cơ cấu phiên dịch địa chỉ của họ Ở cấp cao nhất, một

lõi bộ xử lý (processor core) thi hành một chương trình trong đó một tỷ lệ f MEM trên toàn bộ các

lệnh là các thao tác truy cập bộ nhớ Mỗi chu kỳ, lõi bộ xử lý đó tạo ra đến M yêu cầu dịch địa chỉ Một tỷ lệ f shielded của các yêu cầu này được phục vụ bởi một cơ cấu che chắn (shielding

mechanism) Cơ cấu che chắn là một thiết bị dịch có độ trễ thấp và thông lượng cao, có thể thỏa mãn một yêu cầu phiên dịch mà không: 1) ảnh hưởng đến độ trễ của việc truy cập bộ nhớ, hoặc

2) gửi chuyển tiếp yêu cầu đó đến cơ cấu TLB nền (base TLB mechanism) Vì thế, cơ cấu che chắn này đóng vai trò như một tấm chắn (shield) cho cơ cấu TLB nền, lọc ra một phần f shielded của tất cả các yêu cầu phiên dịch Cơ cấu che chắn hiệu quả có thể làm giảm đáng kể yêu cầu về

thông lượng đối với cơ cấu TLB nền Có thể sử dụng một trong ba cơ cấu che chắn sau đây: TLB mức 1 (L1 TLB), cổng ăn theo (piggyback port), và phiên dịch trước (pretranslation).

Những yêu cầu phiên dịch nào không được xử lý bởi cơ cấu che chắn thì được chuyển đến cơ

cấu TLB nền (base TLB), vốn có thể phục vụ đến N yêu cầu mỗi chu kỳ phiên dịch Cơ cấu TLB

nền hoạt động giống hệt như một TLB truyền thống, cung cấp khả năng truy cập nhanh đến các mục trong bảng trang bằng cách dùng một cấu trúc cache độ trễ thấp Tuy nhiên, cách tổ chức được dùng trong bài báo này có thể là phi truyền thống, thí dụ như theo kiểu đan xen (interleaved), nhằm mục đích tăng thêm thông lượng Nếu có một cổng TLB nền có thể rảnh ngay thì việc phiên dịch được tiến hành ngay Nếu không có cổng nào rảnh, yêu cầu đó được xếp

Trang 3

hàng cho đến khi có một cổng rảnh, khi ấy việc phiên dịch đó có thể được tiến hành Cơ cấu xếp

hàng nào được sử dụng là tùy theo mô hình bộ xử lý, ví dụ như bộ xử lý phát lệnh không đúng thứ tự (out-of-order issue processor) sẽ xếp hàng các yêu cầu phiên dịch trong một bộ đệm sắp xếp lại bộ nhớ (memory re-order buffer), trong khi bộ xử lý phát lệnh đúng thứ tự (in-order issue

processor) thì xếp hàng các yêu cầu bằng cách trì hoãn ống lệnh Các yêu cầu được xếp hàng để

đợi một cổng trong một thời gian trễ trung bình là t stalled Độ lớn của t stalled được quyết định bởi

thông lượng của cơ cấu phiên dịch địa chỉ _ với thông lượng không giới hạn thì t stalled sẽ bằng không, còn với thông lượng giới hạn thì nó có thể lớn hơn không

Hình 1: Mô hình khung của cơ cấu phiên dịch địa chỉ.

Hình 1: Mô hình khung của cơ cấu phiên dịch địa chỉ.

Thông lượng ảnh hưởng như thế nào đối với thời gian trễ do xếp hàng trong bộ xử lý là điều rất phức tạp, bởi vì nó tùy thuộc vào tần suất và độ phân tán của các yêu cầu đối với thiết bị phiên dịch Các tác giả đo đạc ảnh hưởng của nó thông qua những kiểu mô phỏng định thời được

mô tả chi tiết trong mục 4 Sau khi một yêu cầu phiên dịch được cơ cấu TLB nền phục vụ, các

yêu cầu kế tiếp sẽ trúng (hit) trong TLB với tỷ lệ (1 – M TLB) và được phục vụ với thời gian trễ

Theo mô hình phiên dịch địa chỉ này, độ trễ trung bình của một yêu cầu phiên dịch (như được

nhìn thấy bởi lõi bộ xử lý), t AT, là:

t AT = (1 - f shielded )*(t stalled + t TLBhit + M TLB * t TLBmiss)

f

MEM

f TOL

fshielded

tTLBhit,

MTLB,

TTLBmiss

Trang 4

Ảnh hưởng của độ trễ của cơ cấu phiên dịch địa chỉ nhìn thấy bởi lõi bộ xử lý được giảm bớt bởi nhờ hai yếu tố: 1) khả năng chịu đựng trễ của bộ xử lý, và 2) ảnh hưởng tương đối của độ trễ truy cập bộ nhớ so với những độ trễ khác Vì thế, ảnh hưởng lên hệ thống của độ trễ phiên dịch

địa chỉ, được đo theo thời gian trung bình trên mỗi lệnh do trễ phiên dịch địa chỉ, TPI AT, là: TPIAT = fMEM * (1 – fTOL) * tAT

f TOL là tỷ lệ độ trễ phiên dịch địa chỉ mà lõi bộ xử lý chịu đựng được Khối lượng công việc và

mô hình bộ xử lý đều ảnh hưởng đến mức độ chịu đựng được trễ của lõi bộ xử lý Nếu khối lượng công việc tỏ ra có đủ mức độ song song và mô hình thi hành có khả năng chịu đựng trễ, thì ảnh hưởng của của độ trễ phiên dịch địa chỉ trên hiệu năng tổng thể sẽ giảm thiểu Các mô hình

bộ xử lý có khả năng chịu đựng độ trễ cao bao gồm những mô hình cho phép phát lệnh không đúng thứ tự (out-of-order issue), truy cập bộ nhớ không phân khối (no-blocking memory access),

và thi hành phỏng đoán (speculative execution).

Cuối cùng, f MEM là tỷ lệ động của tất cả các lệnh mà truy cập bộ nhớ Tỷ lệ này bị ảnh hưởng bởi khối lượng công việc, số lượng thanh ghi kiến trúc, và khả năng sử dụng các thanh ghi một cách hiệu quả của trình biên dịch Những chương trình mà truy cập bộ nhớ thường xuyên cần có hiệu năng phiên dịch địa chỉ tốt hơn thì mới đạt được hiệu năng hệ thống tốt

Tóm lại, hiệu năng của cơ cấu phiên dịch địa chỉ bị ảnh hưởng: 1) bởi khả năng nó che chắn các yêu cầu truy cập tới cơ cấu phiên dịch nền, và 2) bởi độ trễ và thông lượng của thiết bị phiên dịch nền Tuy nhiên, tác động đối với hệ thống của hiệu năng phiên dịch địa chỉ phụ thuộc vào việc truy cập bộ nhớ của một chương trình và khả năng chịu đựng trễ của bộ xử lý

3 Các cơ cấu phiên dịch địa chỉ thông lượng cao được tác giả đề xuất

Các cơ cấu được các tác giả đề xuất rơi vào hai nhóm: 1) các kiểu mà mở rộng kiểu bộ nhớ thông lượng cao truyền thống sang lĩnh vực phiên dịch địa chỉ, và 2) các kiểu được chế tạo đặc biệt cho phiên dịch địa chỉ thông lượng cao

Trước đó, người ta đã tìm ra nhiều kỹ thuật để cung cấp khả năng truy cập bộ nhớ thông lượng cao, cả trong các tài liệu lẫn trong thực tiễn Những cách tiếp cận phổ biến là các cấu trúc

bộ nhớ đa cổng (multi-ported) [SF91], đan xen (interleaved) [Rau91], và đa mức (multi-level)

[JW94] Các tác giả mở rộng những cách tiếp cận này sang lĩnh vực phiên dịch địa chỉ

Hình 2: Các kiểu bộ nhớ đệm thông lượng cao truyền thống: a) đa cổng, b) đan xen, c) đa mức.

Trang 5

Các tác giả đề xuất hai kỹ thuật mới: cổng ăn theo (piggyback port) và phiên dịch trước

(pretranslation) Cổng ăn theo là một kỹ thuật để khai thác mức độ lân cận về không gian cao trong các yêu cầu phiên dịch đồng thời Cách này cho phép thực hiện những truy cập đồng thời vào cùng một trang bộ nhớ ảo để kết hợp các yêu cầu của chúng tại cổng truy cập TLB Phiên dịch trước là một kỹ thuật để liên kết các kết quả phiên dịch với các giá trị thanh ghi nền, khiến

có thể sử dụng lại nhiều lần một kết quả phiên dịch nào đó

Tất cả các cơ cấu phiên dịch địa chỉ thông lượng cao mà các tác giả đề xuất đều nhằm dành cho những hệ thống sử dụng các cache được lập tag vật lý, tức những hệ thống đòi hỏi phải có một sự phiên dịch cho mỗi thao tác truy cập bộ nhớ Các cache địa chỉ ảo thì không đòi hỏi phải

có một sự phiên dịch cho mỗi thao tác truy cập bộ nhớ; việc phiên dịch địa chỉ không được thực hiện cho tới khi dữ liệu được lấy về từ thiết bị lưu trữ vật lý, chẳng hạn như khi truy cập một cache mức hai được đánh địa chỉ vật lý hoặc bộ nhớ chính Như vậy cache địa chỉ ảo loại trừ những mối bận tâm cả về thông lượng lẫn về độ trễ, tuy nhiên có hai nhược điểm đáng kể khiến

nó không được sử dụng trong các hệ thống trong đời thực: 1) có các địa chỉ đồng nghĩa

(synonym), và 2) thiếu khả năng hậu thuẫn bảo vệ Hơn nữa, cho dù các cache địa chỉ ảo được chấp nhận đi nữa, nhiều khả năng người ta vẫn sử dụng những cấu trúc kiểu TLB để hiện thực cơ cấu bảo vệ, vốn đòi hỏi một thiết bị thông lượng cao giống như những cơ cấu các tác giả đã mô

tả ở đây Do đó, các tác giả chỉ tập trung nghiên cứu các kiểu phiên dịch địa chỉ dành cho các cache được lập tag vật lý

3.1 TLB đa cổng

TLB đa cổng, được minh họa trong Hình 2a, dùng một cách tiếp cận cục súc thô bạo (brute

force) để có được thông lượng cao Mỗi cổng của nó được trang bị đường truy cập dữ liệu riêng đến mỗi mục trong TLB, điều này được hiện thực bằng cách hoặc sao chép toàn bộ cấu trúc TLB (tức dùng một TLB đơn cổng cho mỗi cổng của nó), hoặc dùng nhiều cổng cho mỗi ngăn chứa của TLB Bởi vì mọi mục của TLB này có thể truy cập được từ mỗi cổng của thiết bị, nên kiểu

này cung cấp một hit rate tốt cho mỗi cổng (M TLB thấp) Tuy nhiên, tải trọng dung kháng và trở kháng trên mỗi đường truy cập gia tăng theo số lượng cổng trên thiết bị [WE88], dẫn đến độ trễ truy cập (tTLBhit) dài hơn khi số lượng cổng hoặc mục của TLB tăng lên Ngoài ra, kiểu này chịu một phí tổn là diện tích lớn do cần có thêm nhiều dây dẫn và bộ so sánh để hiện thực mỗi cổng (Trong công nghệ CMOS, diện tích của một thiết bị đa cổng tỷ lệ thuận với bình phương số cổng [Jol91])

Tuy có những nhược điểm về độ trễ truy cập và diện tích hiện thực như vậy, nhưng kiểu này cung cấp thông lượng và hit rate tốt nhất trong tất cả các kiểu, vì vậy, nó là một thứ chuẩn mực tiện lợi để đo hiệu năng của những kiểu khác mà các tác giả đề xuất

3.2 TLB đan xen

TLB đan xen, được minh họa trong Hình 2b, sử dụng một mạch nối (interconnect) để phân phối dòng địa chỉ cho nhiều dải TLB (TLB bank) TLB Mỗi dải TLB có thể phục vụ một cách

độc lập một yêu cầu trên mỗi chu kỳ phiên dịch Kiểu này cung cấp khả năng truy cập thông lượng cao miễn sao những truy cập đồng thời ánh xạ đến những dải khác nhau

Cách ánh xạ giữa các địa chỉ trang ảo và các dải TLB được qui định bởi hàm chọn dải (bank

selection function) Hàm này ảnh hưởng tới sự phân bố các truy cập vào các dải, và vì thế, ảnh hưởng đến thông lượng được phân phối bởi thiết bị này Trong những đánh giá của các tác giả,

họ xem xét cả cách chọn bit (bit selection), vốn sử dụng một phần của địa chỉ trang ảo để chọn

Trang 6

lựa dải, lẫn cách gấp XOR (XOR-folding), vốn ngẫu nhiên hóa việc phân phối dải bằng cách

XOR với nhau các phần của địa chỉ trang ảo

Do cấu trúc của nó, một TLB đan xen có thể không kết hợp đầy đủ (fully-associative), bởi vì

bất kỳ trang cụ thể nào cũng chỉ có thể nằm trên một dải thôi Mức độ kết hợp của nó phải bị giới

hạn bởi mức độ kết hợp của từng dải riêng lẻ Do đó, M TLB của kiểu này có thể cao hơn M TLB của kiểu khác cùng kích thước nhưng tổ chức có tính kết hợp hơn, điều này có thể dẫn tới độ trễ phiên dịch trung bình dài hơn Tuy nhiên, tác hại này có thể tối thiểu nếu TLB đan xen giữ được tính kết hợp cao

Kiểu này nhiều khả năng sẽ có các đặc điểm về độ trễ và diện tích tốt hơn kiểu TLB đa cổng,

đặc biệt là đối với những TLB lớn Tuy mạch nối, thông thường là một full crossbar (một mạng lưới các đường dẫn nối với toàn bộ các dải), làm phát sinh thêm một thời gian trễ nào đó cho

đường truy cập, nhưng độ trễ này được giảm thiểu nhờ độ trễ truy cập ngắn hơn của các dải TLB đơn cổng, nhỏ hơn của nó (so với TLB đa cổng) Phí tổn về diện tích được tập trung trong mạch nối; đối với một full crossbar thì diện tích hiện thực tỷ lệ thuận với bình phương số cổng truy cập Đối với những lượng cổng nhỏ hơn, kích thước có lẽ không đến nỗi quá lớn

3.3 TLB đa mức

TLB đa mức, được minh họa trong Hình 2c, cung cấp khả năng phiên dịch độ trễ thấp và thông lượng cao bằng cách khai thác tính lân cận trong các tham chiếu chương trình Khi một mục của cơ cấu TLB nền (L2 TLB) được tham chiếu, mục đó được đặt vào trong một TLB nhỏ cấp cao hơn (L1 TLB) Mỗi L1 TLB đóng vai trò như một cơ cấu che chắn; nếu nó cung cấp một hit rate tốt, nó sẽ che chắn cho L2 TLB khỏi tất cả các truy cập mà hit trong L1 TLB, làm giảm đáng kể yêu cầu về thông lượng trên L2 TLB

Khi một truy cập miss trong L1 TLB, nó phải gửi chuyển tiếp yêu cầu đó đến L2 TLB, nơi mà

sự tranh giành cổng truy cập L2 TLB, độ trễ truy cập L2 TLB, và độ trễ do miss L2 TLB có thể làm tăng độ trễ tổng thể của truy cập đó Do bởi L1 TLB nhỏ thôi, nên có thể dùng một chính sách thay thế hiệu quả hơn (ví dụ như thay thế LRU trong L1 TLB thay vì thay thế tùy ý _ random replacement _ trong L2 TLB), vốn sẽ cải thiện hit rate của L1 TLB

L1 TLB là một TLB đa cổng có vừa đủ cổng để xử lý tất cả những yêu cầu đồng thời từ lõi bộ

xử lý Bằng cách giữ cho L1 TLB nhỏ, có thể cung cấp được khả năng truy cập vừa thông lượng cao vừa độ trễ thấp vào tất cả các mục của nó Phí tổn phải chịu thêm về diện tích của kiểu này được tập trung trong việc hiện thực L1 TLB, vốn nhỏ hơn nhiều so với L2 TLB nếu kích thước nhỏ và ít cổng

3.4 Các cổng ăn theo (piggyback port)

Các cổng ăn theo, được minh họa trong Hình 3a, khai thác tính lân cận về không gian trong những yêu cầu phiên dịch địa chỉ đồng thời Khi các yêu cầu đồng thời đến tại một cổng TLB, những yêu cầu nào có các địa chỉ trang ảo giống nhau có thể được thỏa mãn bởi cùng một thao tác truy cập TLB

Để hiện thực việc ăn theo, các địa chỉ trang ảo của những yêu cầu phiên dịch bị ách lại được

so sánh với địa chỉ trang ảo của của những yêu cầu phiên dịch đang được thi hành Một yêu cầu

bị ách lại có thể dùng kết quả của một phiên dịch đang được thi hành nếu các địa chỉ trang ảo của chúng trùng nhau Đối với một cổng đơn, tín hiệu phát hiện hit từ cổng TLB có thể được AND với kết quả của việc so sánh địa chỉ trang ảo này Giả sử cả hai yêu cầu phiên dịch đang được thi

Trang 7

hành trong cùng một vùng bảo vệ, thì những trường khác của yêu cầu phiên dịch, tức trường thông tin bảo vệ và trường tình trạng trang, cũng có thể được gửi chuyển tiếp đến những yêu cầu phiên dịch nào có các địa chỉ trang ảo trùng khớp

Hình 3: Các kiểu được chế tạo riêng cho phiên dịch địa chỉ thông lượng cao: a) cổng ăn theo, và

b) phiên dịch trước

Các cổng ăn theo có tác hại tối thiểu đối với độ trễ phiên dịch Sau khi một yêu cầu phiên dịch được gửi đến TLB, tất cả những yêu cầu khác có thể so sánh các địa chỉ ảo song song (cùng một lúc) với việc truy cập TLB của yêu cầu đó Kết quả là, tác hại của độ trễ phiên dịch chỉ giới hạn

ở mức độ trễ của việc AND với tín hiệu TLB hit mà thôi Phí tổn cho diện tích cũng rất nhỏ, được giới hạn ở mức diện tích của chỉ một bộ so sánh và một cổng AND tín hiệu hit trên mỗi cổng ăn theo mà thôi

3.5 Phiên dịch trước (pretranslation)

Phiên dịch trước là cơ cấu che chắn mà cho phép một yêu cầu phiên dịch duy nhất được sử dụng cho nhiều truy cập bộ nhớ Hình 4 minh họa lý thuyết nền tảng cho cách tiếp cận này Các thao tác load và store truy cập bộ nhớ thông qua các con trỏ thanh ghi: các truy cập global thông qua con trỏ global [CCH+87], các truy cập stack thông qua con trỏ stack, còn tất cả những tham chiếu khác thì thông qua các con trỏ thanh ghi phổ dụng Các con trỏ này được tạo ra mỗi khi một biến được tham chiếu, khi địa chỉ của nó được đọc lấy, hoặc khi bộ nhớ động được cấp phát

Trong chu kỳ sống của một con trỏ, nó được giải tham chiếu (dereference) ở các thao tác load và store, và được tác động vào (manipulate) bằng những phép toán số học trên số nguyên Trải qua

suốt chu kỳ sống của con trỏ đó, nó có thể được giải tham chiếu và tác động nhiều lần

Trong những cơ cấu phiên dịch địa chỉ dựa trên TLB truyền thống, một yêu cầu phiên dịch địa chỉ được đưa tới TLB mỗi lần một con trỏ được giải tham chiếu, và những yêu cầu sau đó nhiều khi cũng yêu cầu cũng một sự phiên dịch như vậy Với giải pháp phiên dịch trước, các tác giả liên kết một kết quả phiên dịch với một giá trị thanh ghi vào lần giải tham chiếu đầu tiên của giá trị đó, tức là vào thao tác load hoặc store đầu tiên sử dụng thanh ghi đó như một giá trị thanh ghi nền Vào những lần tham chiếu sau này, các thao tác load và store có thể dùng kết quả phiên dịch trước được liên kết với giá trị thanh ghi đó miễn sao địa chỉ trang ảo của sự truy cập bộ nhớ ấy

Trang 8

trùng khớp với địa chỉ trang ảo của kết quả phiên dịch được liên kết này Khi các con trỏ được tác động bằng các phép toán số học, mọi kết quả phiên dịch được liên kết đều được truyền đến giá trị thanh ghi đích Cơ chế dịch trước cung cấp thông lượng cao chừng nào các con trỏ thanh ghi còn được sử dụng lại thường xuyên và trỏ tới cùng một trang bộ nhớ ảo Vì vậy, một yêu cầu phiên dịch duy nhất từ cơ cấu TLB nền có thể được sử dụng nhiều lần

Hình 4: Vòng đời của một con trỏ (thanh ghi) Hình a) cho thấy một đoạn mã lệnh C trong đó

con trỏ p đi dần từng bước qua một array Hình b) minh họa những thao tác mà xảy ra trong suốt

thời gian sống của con trỏ p

Trong Hình 3b, kiểu phiên dịch trước của các tác giả được tích hợp vào một ống lệnh của vi

xử lý Các kết quả phiên dịch trước được truy cập song song với truy cập vào tập thanh ghi trong giai đoạn giải mã của ổng lệnh, khiến cho kết quả phiên dịch trước có sẵn trước khi bắt đầu thi hành lệnh Nếu lệnh được thi hành là một thao tác số học, kết quả phiên dịch trước ấy sẽ được liên kết vào giá trị của thanh ghi kết quả Đối với các thao tác load và store, kết quả phiên dịch trước, nếu có, được dùng để lược bỏ đi truy cập TLB nếu các địa chỉ trang ảo trùng khớp Nếu các địa chỉ trang ảo không trùng khớp, một yêu cầu phiên dịch sẽ được gửi chuyển tiếp đến cơ cấu phiên dịch nền Kết quả của việc phiên dịch này được liên kết vào giá trị của thanh ghi nền

Có hai điều cần cân nhắc ảnh hưởng đến kiểu của cơ cấu được dùng để liên kết các kết quả phiên dịch trước với các giá trị thanh ghi Thứ nhất, một giá trị con trỏ duy nhất có thể tham chiếu nhiều trang Một cơ chế thích hợp để liên kết nhiều kết quả phiên dịch vào một thanh ghi duy nhất có thể làm cải thiện hiệu năng, chẳng hạn như một vài bit từ độ lệch có thể được kết hợp với mã nhận diện thanh ghi nền để tạo thành một mã nhận diện của một kết quả phiên dịch trước Thứ hai, vào một thời điểm bất kỳ, chỉ một số thanh ghi chứa giá trị con trỏ thôi, vì vậy thus, không cần phải cấp phát dung lượng nhớ cho mọi thanh ghi Chỉ cần dùng một cache nhỏ

(mà các tác giả gọi là cache phiên dịch trước _ pretranslation cache) là đủ để chứa các kết quả

phiên dịch trước rồi Nếu cache này được giữ sao cho nhỏ thôi, nó sẽ tạo điều kiện để truy cập thông lượng cao và độ trễ thấp vào các kết quả phiên dịch trước

Mọi thay đổi trong trạng thái bộ nhớ ảo, chẳng hạn như cách ánh xạ địa chỉ, kích thước trang, hoặc quyền truy cập, phải được phản ánh trong cache phiên dịch trước này, nếu không thì sẽ không phát hiện được những truy cập không đúng Nếu những thay đổi trạng thái của bộ nhớ ảo

là không thường xuyên, có thể chỉ việc xóa sạch (flush) cache phiên dịch trước mỗi khi có thay

đổi xảy ra là xong

Cơ cấu phiên dịch trước có thể được xem như một sự mở rộng của cache địa chỉ rẽ nhánh

(branch address cache _ BAC) của Chiueh và Katz [CK92], vốn đã được áp dụng như một cơ chế

Trang 9

để làm giảm độ trễ truy cập của các cache lập chỉ mục vật lý Kiểu phiên dịch trước của các tác giả mở rộng kỹ thuật BAC để cung cấp khả năng phiên dịch thông lượng cao Bằng cách liên kết địa chỉ trang ảo vào một giá trị thanh ghi, không cần phải truy cập cơ cấu TLB nền để xác nhận tính đúng đắn của việc sử dụng một địa chỉ trang vật lý đã được liên kết nào đó Giống như BAC, kiểu phiên dịch trước mà các tác giả đề xuất cung cấp địa chỉ trang vật lý vào cuối giai đoạn giải mã lệnh Vì vậy, nó có thể được dùng để truy cập một cache được lập chỉ mục vật lý

mà không làm tăng độ trễ phiên dịch địa chỉ

Kiểu phiên dịch trước mà các tác giả đề xuất đưa hai sự sửa đổi vào cơ cấu BAC nguyên thủy Thứ nhất, kiểu phiên dịch trước của họ theo dõi những lệnh mà tạo ra những giá trị con trỏ, và truyền kết quả dịch trước của một toán hạng bất kỳ đến thanh ghi kết quả Biện pháp tối ưu hóa này là cần thiết để có được hiệu năng tốt đối với mã lệnh đã được tối ưu hóa mà những thao tác

sao chép thanh ghi thường xảy ra, ví dụ như trong khi lập lịch biểu cho lệnh hoặc trải vòng lặp

(loop unrolling) Thứ hai, họ sử dụng một bộ cache nhỏ để lưu trữ những kết quả phiên dịch trước thay vì dùng BAC lớn hơn Bởi vì vào một thời điểm bất kỳ, chỉ một phần của tất cả thanh ghi chứa các giá trị con trỏ thôi, nên cache phiên dịch trước nhỏ nhắn của họ cung cấp một hit rate rất tốt

4 Đánh giá bằng thực nghiệm

Các tác giả đánh giá những phẩm chất tương đối của các kiểu phiên dịch địa chỉ thông lượng cao của mình bằng cách mở rộng một mô hình mô phỏng định thời chi tiết để hậu thuẫn những

cơ cấu phiên dịch được đề xuất và bằng cách xem xét hiệu năng của những chương trình chạy trên mô hình mô phỏng mở rộng đó Họ đã thay đổi kích thước trang, kiểu phát lệnh của bộ xử

lý, và số thanh ghi kiến trúc để xem ảnh hưởng mà các thông số hệ thống này có trên các cơ cấu phiên dịch đó là gì Tất cả các kết quả được trình bày trong mục này đều là những giá trị trung

bình được đo theo thời gian chạy trên tất cả các trình đo kiểm (benchmark).

4.1 Phương pháp đánh giá

Mô hình mô phỏng cơ bản (baseline simulator) của các tác giả chỉ thi hành những lệnh ở cấp

người dùng, hiện thực một sự mô phỏng định thời chi tiết của một bộ vi xử lý superscalar 8-đường và cấp đầu tiên của bộ nhớ cache dữ liệu và lệnh Mô hình mô phỏng này hậu thuẫn cả hai

mô hình thi hành phát lệnh đúng thứ tự và không đúng thứ tự Việc mô phỏng được điều khiển

thông qua thi hành, kể cả việc thi hành mọi lộ trình phỏng đoán (speculative path) cho tới khi

phát hiện một page fault, TLB miss, hoặc tiên đoán sai Mô hình phát lệnh đúng thứ tự không

cung cấp cơ chế đổi tên (renaming) và trì hoãn (stall) nào mỗi khi có bất kỳ rủi ro dữ liệu (data

hazard) nào xảy ra trên các thanh ghi Mô hình không đúng thứ tự thì sử dụng một bộ nhớ đệm

sắp thứ tự lại (re-order) 64 mục vốn hiện thực các thanh ghi đổi tên và trữ kết quả của những

lệnh đã thi hành xong nhưng đang chờ các lệnh khác được thi hành (để sắp lại đúng thứ tự) Các thao tác load và store được đặt vào trong một hàng đợi load/store 32 mục Các thao tác store được thi hành khi tất cả các toán hạng đã sẵn sàng; các giá trị của chúng, nếu là phỏng đoán, sẽ được đặt vào trong hàng đợi load/store ấy Các thao tác load thì có thể thi hành khi tất cả những địa chỉ store trước đó đã được tính xong; các giá trị của chúng đến từ một thao tác store trùng khớp trước đó trong hàng đợi store hoặc từ cache dữ liệu Các thao tác load phỏng đoán có thể làm phát sinh các cache miss nếu địa chỉ của chúng hit trong TLB Nếu thao tác load ấy sau đó bị bác đi, thì cache miss vẫn được hoàn tất Tuy nhiên, những TLB miss phỏng đoán thì không được phép Tức là, nếu một truy cập cache phỏng đoán bị miss trong TLB, việc phát lệnh sẽ bị

đình lại cho tới khi lệnh mà đã phát hiện TLB miss đó bị bác đi hoặc được commit Mỗi chu kỳ,

Trang 10

bộ nhớ đệm re-order này commit đến 8 kết quả có thứ tự vào các thanh ghi kiến trúc Khi các thao tác store được commit, giá trị store được ghi vào cache dữ liệu Cache dữ liệu được mô hình

hóa ở đây là một cache không chia khối (non-blocking) kiểu two-way set-associative bốn cổng

dung lượng 32k

Các tác giả đã thực hiện một số thay đổi cho mô hình mô phỏng này để hậu thuẫn các cơ cấu phiên dịch địa chỉ thông lượng cao của mình Các kiểu mà họ khảo sát, với những cái tên gợi nhớ của chúng, được liệt kê trong Bảng 1

Bảng 1: Các ki u phiên d ch a ch ểu phiên dịch địa chỉ được phân tích ịch địa chỉ được phân tích địch địa chỉ được phân tích ỉ được phân tích được phân tích c phân tích.

Tên gợi nhớ Mô tả

T4 TLB 4-cổng, 128 mục, fully-associative, thay thế tùy ý

T2 TLB 2-cổng, 128 mục, fully-associative, thay thế tùy ý

T1 TLB 1-cổng, 128 mục, fully-associative, thay thế tùy ý

I8 TLB 8-way chọn bit đan xen, 128 mục (mỗi dải 16 mục fully-associative),

thay thế tùy ý trong dải I4 TLB 4-way chọn bit đan xen, 128 mục (mỗi dải 32 mục fully-associative),

thay thế tùy ý trong dải X4 TLB 4-way chọn-XOR đan xen, 128 mục (mỗi dãy 32 mục fully-associative),

thay thế tùy ý trong dải M16 L1 TLB 4-cổng 16-mục thay thế kiểu LRU, L2 TLB 128-mục,

fully-associative, thay thế tùy ý M8 L1 TLB 4-cổng 8-mục thay thế kiểu LRU, L2 TLB 128-mục,

fully-associative, thay thế tùy ý M4 L1 TLB 4-cổng 4-mục thay thế kiểu LRU, L2 TLB 128-mục,

fully-associative, thay thế tùy ý P8 Cache phiên dịch trước 4-cổng 8-mục thay thế kiểu LRU, L2 TLB 128-mục,

fully-associative, thay thế tùy ý PB2 TLB 2-cổng với 2 cổng piggyback, 128 mục, fully-associative, thay thế tùy ý PB1 TLB 1-cổng với 3 cổng piggyback, 128 mục, fully-associative, thay thế tùy ý I4/PB TLB 4-way chọn bit đan xen với các dải piggyback, 128 mục (32 mục/dải),

thay thế tùy ý trong dải

4.2 Các chương trình được phân tích

Khi chọn lựa các tiêu chuẩn để đánh giá, các tác giả tìm kiếm những chương trình có hiệu năng hệ thống bộ nhớ hay thay đổi, tức các chương trình có những bộ dữ liệu lớn và nhỏ cũng

như có tính lân cận tham chiếu cao và thấp Các chương trình Compress, Doduc, Espresso, Tomcatv, và Xlisp được lấy từ bộ phần mềm đo kiểm SPEC’92 Ghostscript là chương trình xem

postscript, chuyển một trang có văn bản và hình ảnh đồ họa thành một file đồ họa theo dạng thức

PPM MPEG_play là bộ giải mã video MPEG hiển thị một file video nén 79 khung hình Perl là

Ngày đăng: 24/12/2016, 21:11

TỪ KHÓA LIÊN QUAN

w