Làm thế nào để Memtest86 hoạt động với RAM xấu?


17

Tôi đang đọc một câu hỏi khác về Memtest và bắt đầu tự hỏi: Làm thế nào để Memtest86 hoạt động với RAM xấu?

Hãy suy nghĩ về nó: Memtest86 cần lưu trữ thông tin về dung lượng RAM lớn, dung lượng của RAM để so sánh sau này, nơi cập nhật màn hình và nhiều thông tin khác. Hành động sử dụng một biến đòi hỏi RAM phải hoạt động đúng. Nhưng làm thế nào bạn có thể nhận được kết quả đáng tin cậy khi bạn chạy chương trình trên RAM có thể bị lỗi?

Tương tự như vậy là đang chạy một chương trình kiểm tra ổ cứng từ ổ cứng mà bạn đang kiểm tra. Bạn sẽ không bao giờ làm điều đó, một khối xấu có thể ảnh hưởng đến chương trình theo nhiều cách bất ngờ

Làm thế nào để Memtest86 hoạt động với RAM xấu?


2
FYI, tất cả các công việc được thực hiện bởi CPU được thực hiện trong RAM. Khi một chương trình được thực thi, nó được thực hiện trong RAM, nó không liên quan gì đến các biến. Bạn có thể viết một chương trình hoàn toàn không có gì và không bao giờ sử dụng bất kỳ biến nào, nhưng chương trình đó nằm trong bộ nhớ. Câu hỏi rất thú vị mặc dù.
Keltari

2
Vì tất cả các chương trình (không tầm thường) đều sử dụng các biến, nên mẹo cho người kiểm tra bộ nhớ / người tập thể dục là lưu trữ các biến của chúng trong các thanh ghi, thay vì bộ nhớ. Điều đó cũng có nghĩa là không có ngăn xếp! Một số chương trình bộ nhớ thực thi hết ROM (ví dụ kiến ​​trúc Harvard) hoặc, nếu cư trú trong RAM được kiểm tra, hãy di chuyển mã sau mỗi lần vượt qua. Thành công hay thất bại khi thực hiện chương trình thử nghiệm tại các vị trí RAM khác nhau là một phần của máy tập. Tất nhiên, có thể có những người kiểm tra bộ nhớ được viết kém sử dụng RAM được kiểm tra như một chương trình thông thường
mùn cưa

@Keltari về mặt kỹ thuật, các bộ phận của BIOS chạy thẳng ra khỏi đèn flash NOR ....
rackandboneman

Câu trả lời:


9

Chủ yếu là vì số lượng ram mà nó cần để tải memtest là vô cùng nhỏ. Nếu chương trình chạy, có khả năng bộ nhớ trong khu vực này vẫn ổn.

Cơ hội đó-

  1. Phần nhỏ của bộ nhớ memtest đã được tải vào là xấu.
  2. Nó vẫn đủ tốt để nó có thể hoàn thành tất cả các bài kiểm tra thành công mà không có vấn đề đáng chú ý.

Rất cao - không thể xảy ra.


7

Memtest khá bền ở chỗ nó không thực sự phụ thuộc vào RAM mà nó đang thử nghiệm.

Ví dụ: test 0 sử dụng thuật toán đi bộ và tất cả những gì nó yêu cầu cho thử nghiệm đó là một con trỏ đơn (có thể được lưu trong bộ nhớ cache), vì nó chỉ so sánh hai địa chỉ bộ nhớ liên tiếp.

Vì vậy, nếu chúng ta có thanh RAM 3 bit, memtest sẽ tải nó bằng cách này:

<pointer location> 00000001 00000010 00000100 00001000 00010000 00100000 01000000

Và nếu địa chỉ đầu tiên bị hỏng, nó sẽ so sánh hai vị trí ngẫu nhiên:

00000001 00100000

Và nó vẫn sẽ thất bại, ngay cả khi các biến của memtest bị hỏng.


3

Memtest hoàn toàn phải đưa ra ít nhất một giả định, rằng ít nhất bộ nhớ mà nó tự nạp vào là tốt. Sau đó, nó có thể quét và kiểm tra toàn bộ phần còn lại của bộ nhớ.

Có thể là nó vẫn có thể đọc và phát hiện lỗi trong bộ nhớ của chính nó, vì là chương trình duy nhất được tải, nên nó có quyền truy cập vào thực tế tất cả bộ nhớ trên hệ thống và do đó có thể đọc và so sánh bộ nhớ đó với mẫu "được biết đến tốt".


Tôi chủ yếu nghĩ về những thay đổi trong hành vi mà RAM xấu có thể làm. Ví dụ: nếu ram xấu thay đổi logic để tất cả các bài kiểm tra luôn hiển thị đúng.
TheLQ

Tôi có thể nói rằng có thể một lần lật một bit có thể khiến đọc sai thành đúng trong khi kiểm tra, nhưng nhiều khả năng bit lật sẽ ở một mức độ quan trọng hơn nhiều, trong Memtest tôi sẽ mong đợi kích thước của hoạt động thực tế mã lớn hơn "trường hợp thử nghiệm" và vì vậy tôi dự đoán rằng một lỗi nhỏ sẽ khiến chương trình gặp sự cố khủng khiếp trước khi phát hiện lỗi vượt qua thay cho lỗi. Tôi thừa nhận đó là một khả năng mặc dù.
Mokubai

1

Bởi nhỏ bé. Nếu một số RAM xấu, chương trình càng nhỏ thì càng ít khả năng một phần của chương trình sẽ ở một trong những điểm xấu. Xem xét rằng việc khởi động đủ xa để tải bài kiểm tra bộ nhớ sẽ liên quan đến một số mã phần sụn sử dụng RAM, tỷ lệ cược là nếu bạn có thể đi xa đến đó, các vùng RAM thấp hoạt động đủ tốt để memtest có thể chạy từ chúng.


1

Hãy suy nghĩ về nó: Memtest86 cần lưu trữ thông tin về dung lượng RAM lớn, dung lượng của RAM để so sánh sau này, nơi cập nhật màn hình và nhiều thông tin khác. Hành động sử dụng một biến đòi hỏi RAM phải hoạt động đúng. Nhưng làm thế nào bạn có thể nhận được kết quả đáng tin cậy khi bạn chạy chương trình trên RAM có thể bị lỗi?

Chà, đây là những gì Memtest làm - nó ghi các mẫu khác nhau (đã biết) vào RAM của bạn, đọc lại và so sánh. Nếu có kết quả sai, RAM của bạn phải bị hỏng.

Tương tự như vậy là đang chạy một chương trình kiểm tra ổ cứng từ ổ cứng mà bạn đang kiểm tra. Bạn sẽ không bao giờ làm điều đó, một khối xấu có thể ảnh hưởng đến chương trình theo nhiều cách bất ngờ

Trong khi điều này là đúng, có một số trường hợp bạn không có sự lựa chọn. Miễn là bạn có thể tải chương trình thành công, nó sẽ có thể thực hiện các tác vụ chẩn đoán của nó (ngay cả khi nó chạy trên một phương tiện bị lỗi nào đó).

Làm thế nào để Memtest86 hoạt động với RAM xấu?

Vâng, nó phải tự tải vào bộ nhớ trước. Trong hầu hết các trường hợp, bộ nhớ này sẽ vẫn tốt. Trong trường hợp không phải như vậy, Memtest rất có thể sẽ xác định rằng chính chương trình bị hỏng bằng cách so sánh một số biến tại chỗ với tổng kiểm tra. Trong trường hợp chúng không khớp, bạn sẽ biết ngay rằng RAM của mình bị hỏng hoặc bản sao bạn đã tải xuống bị hỏng (và đó sẽ là một nhiệm vụ tầm thường để xác định xem liệu đây có phải là nguyên nhân hay không).


TL, DR: Memtest86 + chỉ hoạt động với giả định megabyte RAM đầu tiên của bạn vẫn ổn (vị trí có thể được tải nhiều nhất). Giả sử khu vực này bị hỏng, bản thân Memtest86 + sẽ không hoạt động (đây là một chỉ báo khá nhanh, RAM của bạn rất tệ mà không cần chạy thử nghiệm).


0

Nếu RAM ứng dụng đang lưu các biến là xấu, thì hầu hết các thử nghiệm sẽ thất bại.

Thuật toán viết tất cả các loại mẫu khác nhau và sau đó kiểm tra xem chúng có được viết tốt hay không bằng cách đọc lại chúng, nếu việc viết hoặc đọc không đúng, nó sẽ làm cho bài kiểm tra bị lỗi. Bằng cách chạy hầu hết các bài kiểm tra và để nó chạy trong vài giờ, bạn có thể thấy RAM của mình ổn định đến mức nào ...

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