CCoW: Tối ưu hóa tính năng sao chép khi ghi có tính đến vị trí không gian trong khối lượng công việc Phần 4
Apr 03, 2024
3.3. Theo dõi quyền truy cập vào các trang được sao chép trước
CCoW có nhiệm vụ khấu hao chi phí cho chi phí xử lý lỗi trang thường xuyên. Tuy nhiên, việc sao chép trước các trang sẽ dẫn đến một vấn đề khác: việc theo dõi các lượt truy cập trang sau khi sao chép.
Có một mối liên hệ chặt chẽ giữa xử lý lỗi và bộ nhớ. Đối với hầu hết mọi người, sai lầm thường bị coi là điều xấu nhưng chúng có thể là cơ hội để chúng ta học hỏi và trưởng thành. Bằng cách xử lý lỗi một cách chính xác, chúng ta có thể nâng cao trí nhớ và giúp chúng ta hiểu rõ hơn cũng như ứng phó tốt hơn với các tình huống tương tự.
Một cách để đối phó với sai lầm là suy ngẫm và phân tích. Khi mắc lỗi, chúng ta nên dành thời gian để suy ngẫm xem lỗi đó đã xảy ra như thế nào và chúng ta có thể làm gì để ngăn lỗi tương tự xảy ra lần nữa. Thông qua việc suy ngẫm, chúng ta có thể xác định nguyên nhân gốc rễ của vấn đề và phát triển các biện pháp đối phó để giải quyết chúng. Kiểu phân tích này không chỉ về những sai lầm mà còn có thể giúp chúng ta đưa ra quyết định tốt hơn trong các tình huống khác trong cuộc sống và giúp chúng ta cải thiện các kỹ năng và khả năng của mình.
Một cách khác để giải quyết sai lầm là cho phép bản thân chấp nhận chúng và bước tiếp. Chúng ta không nên để những sai lầm làm chúng ta chậm lại hoặc làm chúng ta nản lòng. Thay vào đó, chúng ta nên xem chúng như những cơ hội để phát triển, cho phép bản thân học hỏi từ những sai lầm của mình và tiếp tục cải thiện. Nếu chúng ta có thể chấp nhận sai lầm và giải quyết chúng bằng thái độ tích cực, chúng ta có thể xây dựng tư duy và sự tự tin mạnh mẽ, điều này rất quan trọng để duy trì trí nhớ tốt.
Cuối cùng, chúng ta có thể củng cố trí nhớ bằng cách chia sẻ những sai lầm của mình. Khi kể với người khác về những sai lầm mình đã mắc phải, chúng ta có xu hướng nhớ sâu sắc hơn về những sự kiện đó. Đó là vì khi nói với người khác, chúng ta phải làm mọi việc rõ ràng hơn và nhớ lại từng chi tiết của lỗi lầm. Bằng cách này, chúng tôi có thể hiểu rõ hơn về những lỗi này và ngăn chúng xảy ra lần nữa.
Tóm lại, có một mối quan hệ chặt chẽ giữa xử lý lỗi và bộ nhớ. Bằng cách xử lý sai lầm một cách chính xác, chúng ta có thể củng cố trí nhớ, cải thiện kỹ năng và khả năng của mình và trở thành người tốt hơn. Chúng ta nên coi sai lầm là cơ hội, tích cực đối mặt với khó khăn, học hỏi và trưởng thành từ chúng. Có thể thấy, chúng ta cần cải thiện trí nhớ, và Cistanche Deserticola có thể cải thiện trí nhớ đáng kể vì Cistanche Deserticola là một dược liệu cổ truyền của Trung Quốc có nhiều tác dụng độc đáo, một trong số đó là cải thiện trí nhớ. Hiệu quả của Cistanche Deserticola đến từ nhiều thành phần hoạt chất có trong nó, bao gồm axit tannic, polysaccharides, flavonoid glycoside, v.v. Những thành phần này có thể tăng cường sức khỏe não bộ thông qua nhiều con đường khác nhau.

Bấm Biết Trí Nhớ Ngắn Hạn để cải thiện
Trong sơ đồ sao chép trên ghi ban đầu, lần ghi đầu tiên vào mỗi trang sẽ được trình xử lý lỗi trang ghi lại.
Chỉ trang bị lỗi mới được sao chép và hệ thống có thể theo dõi chính xác từng lần truy cập trang thông qua trình xử lý lỗi trang. Mặt khác, khi hệ thống sao chép toàn bộ vùng, tất cả các trang trong vùng sẽ được ánh xạ tới quy trình với sự cho phép bằng văn bản.
Do đó, việc ghi tiếp theo vào các trang được sao chép đó có thể diễn ra mà không kích hoạt cơ chế xử lý lỗi trang, do đó hệ thống không thể theo dõi các truy cập vào các trang được sao chép. Điều này có thể có vấn đề khi quá trình thực hiện các nhánh liên tục. Giả sử một vùng có vị trí không gian cao và một kỷ nguyên được xác định là khoảng thời gian giữa hai nhánh.
Tính cục bộ cao có thể được nắm bắt bằng cách đếm số lỗi trang xảy ra trong khu vực. Sau đó, giả sử rằng quy trình này tạo ra một quy trình mới bằng một ngã ba. Khi một kỷ nguyên mới được bắt đầu bằng phân nhánh, quyền truy cập ghi đầu tiên vào một trong các trang trong khu vực sẽ bắt đầu CCoW, sao chép tất cả các trang trong khu vực. Bây giờ quy trình có tất cả các trang có quyền ghi và không có lỗi trang nào khác được tạo ra từ khu vực cho đến hết kỷ nguyên.
Khi một kỷ nguyên mới được bắt đầu lại, khu vực đó được coi là có mức độ bao phủ thấp trong kỷ nguyên đó, vì khu vực đó chỉ có một trang sao chép khi ghi. Do đó, mỗi lần ghi vào vùng được xử lý thông qua cơ chế sao chép trên ghi ban đầu trên mỗi trang, do đó ảnh hưởng đến cơ hội tối ưu hóa hiệu suất ngay cả khi vùng có địa phương cao.
Lưu ý rằng khu vực này lại được coi là có địa phương cao trong kỷ nguyên tiếp theo và quá trình này được lặp lại để thay thế tình huống. Để giải quyết vấn đề này, chúng tôi cần một cơ chế theo dõi việc truy cập trang sau khi sao chép.
Nghiên cứu này đề xuất tận dụng phần bẩn trong mục nhập bảng trang (PTE). Nhìn chung, các kiến trúc hiện đại duy trì nhiều thông tin khác nhau trong PTE cho mỗi trang và dirty bit là một trong các trường được hầu hết các kiến trúc hỗ trợ.
Khi MMU xử lý quyền truy cập bộ nhớ ghi, nó sẽ tự động đặt dirty bit của trang tương ứng. Điều này ngược lại ngụ ý rằng khi dirty bit cho một trang được đặt, trang đó đã được cập nhật quyền truy cập ghi.
Dựa trên ý tưởng này, chúng tôi đã sửa đổi cơ chế tính toán phạm vi bảo hiểm. Ban đầu, tất cả các vùng được coi là vùng bình thường. Trong quá trình phân nhánh, phạm vi bao phủ cho các vùng bình thường được tính bằng số lần sao chép khi ghi bằng Công thức (1).

Trong khi xử lý lỗi trang cho vùng có tính cục bộ cao, tất cả các trang trong vùng đều được sao chép với bit bẩn đã được xóa. Hơn nữa, vùng này được đánh dấu là vùng được sao chép trước. Trong quá trình rẽ nhánh, phạm vi bao phủ cho vùng được sao chép được tính toán với số lượng trang bẩn trong vùng như sau:
![]()
Phạm vi bao phủ được tính toán cho từng khu vực được truyền qua nhánh và được sử dụng làm thước đo cho vị trí không gian của khu vực. Khi xảy ra lỗi ghi trang trong một khu vực, hệ thống sẽ kiểm tra phạm vi phủ sóng của khu vực đó và có thể sao chép trước các trang cho các khu vực có tính địa phương cao.
Hình 2 minh họa trường hợp mức độ bao phủ được tính toán sau khi sao chép trước. Giả sử cả hai vùng đều được sao chép (được tô màu đỏ) và các trang 0, 2, 3, 4 và 11 đều có bộ dirtybit.
Để tính toán phạm vi bao phủ trong khi xử lý phân nhánh, hệ thống sử dụng bit bẩn thay vì số lần sao chép khi ghi vì các vùng được sao chép trong kỷ nguyên hiện tại. Do đó, vùng 0 có phạm vi bao phủ là 66%.
Trong khi đó độ bao phủ của vùng 1 là 15%. Để xử lý lỗi trang cho trang 3, vùng 0 được sao chép lại, trong khi đó, lỗi trang cho trang 9 được xử lý theo cơ chế ban đầu. Bằng cách này, chúng tôi có thể giữ cho các khu vực có tính địa phương cao không bị mất tiêu điểm.

3.4. Nắm bắt địa phương
Vì trình xử lý lỗi trang nằm trên đường dẫn quan trọng về hiệu năng trong hệ điều hành, nên chúng ta nên giảm thiểu chi phí thực hiện sơ đồ được đề xuất.
Về cơ bản, CCoW yêu cầu một cơ chế tính toán phạm vi bao phủ và cách đơn giản nhất để triển khai tính năng này là theo dõi các trang gây ra lỗi trang bằng bitmap như chúng tôi đã mô tả trong Phần 3.2.
Trong khi xử lý lỗi trang, hệ thống sẽ đặt bit tương ứng với trang bị lỗi. Trong quá trình phân nhánh, hệ thống sẽ quét bitmap để đếm số lượng trang bị lỗi cho từng khu vực và tính toán phạm vi bao phủ. Bitmap được đặt lại sau khi tính toán.
Cách tiếp cận này đơn giản nhưng áp đặt những hạn chế lớn về không gian và thời gian. Hệ thống phải duy trì mục nhập bitmap một bit cho mỗi trang 4 KB và kiểm tra toàn bộ bitmap trong quá trình phân nhánh. Xem xét dung lượng bộ nhớ khổng lồ của các ứng dụng sử dụng nhiều bộ nhớ, các hoạt động này sẽ phải chịu chi phí cao trong quá trình phân nhánh, bù lại lợi ích về hiệu suất của CCoW. Chúng tôi tối ưu hóa việc triển khai này bằng cách khai thác các đặc điểm của lỗi trang.
Nếu lỗi trang xảy ra từ một trang, trang đó sẽ không phát sinh thêm lỗi trang cho đến khi quá trình này tạo ra một quy trình mới. Do đó, mỗi trang có thể gây ra lỗi một trang nhiều nhất và đối với một khu vực có n trang, lỗi trang chỉ có thể xảy ra tối đa n lần. Điều này ngụ ý rằng việc đếm số lượng lỗi trang trên mỗi vùng là đủ để tính toán mức độ bao phủ, thay vì duy trì bitmap cho từng trang riêng lẻ.
Vì vậy, chúng tôi thay thế bitmap bằng bộ đếm lỗi. Mỗi vùng được liên kết với một cặp bộ đếm như sau: một bộ đếm để đếm lỗi trang trong kỷ nguyên cuối cùng và một bộ đếm khác để đếm lỗi trang trong kỷ nguyên hiện tại.
Cái trước được sử dụng để xác định vị trí không gian của các vùng, trong khi cái sau được sử dụng để giám sát vị trí không gian của kỷ nguyên hiện tại. Trong quá trình phân nhánh, bộ đếm lỗi hiện tại được sao chép vào bộ đếm lỗi trước đó.
Nếu một vùng được sao chép trong kỷ nguyên này, thay vào đó, số lượng trang bẩn trong vùng sẽ được ghi vào bộ đếm lỗi trước đó. Các bộ đếm được điền trong khi tạo vùng bộ nhớ ảo mới (VMA) và được thu hồi khi VMA tương ứng của chúng bị thu nhỏ hoặc không được ánh xạ. Việc tối ưu hóa này giúp giảm chi phí không gian của CCoW từ một bit trên mỗi trang xuống còn vài byte cho mỗi vùng.

For more information:1950477648nn@gmail.com






