Làm thế nào chúng ta có thể chắc chắn rằng máy tính sẽ không bao giờ vô tình chuyển 0 bằng 1?


63

Tôi đã đọc một chút về việc xây dựng một máy tính kỹ thuật số trong Shocken / Nisan: Các yếu tố của hệ thống máy tính . Nhưng cuốn sách này không nói gì về các khía cạnh điện nhất định trong máy tính, ví dụ: Người ta thường nói rằng 0 và 1 được biểu thị bằng điện áp, nếu điện áp nằm trong khoảng [0, 0,9), thì đó là 0. Nếu điện áp là trong khoảng [0,9, 1,5), sau đó là 1 (điện áp có thể thay đổi, tôi chỉ đưa ra một ví dụ).

Nhưng tôi không bao giờ đọc những gì giữ cho điện áp "hoạt động tốt" theo cách 0 không bao giờ có thể vô tình trở thành số 1 do biến động điện [1] bên trong máy tính. Có lẽ điện áp rất gần 0,9, vậy thì phải làm gì để tránh nó vượt qua ngưỡng?

[1]: Giả sử nó tồn tại.


7
Hiện tại không bao giờ rất gần 0,9, bởi vì không có gì làm cho hiện tại rất gần 0,9.
dùng253751

7
Bởi vì mọi thứ được thiết kế để không tạo ra dòng điện rất gần 0,9. Bạn cũng có thể hỏi "Tôi có bằng chứng thực nghiệm vững chắc rằng máy tính xách tay của tôi không bị tính phí tới 50 gigavol; tại sao không?" Đơn giản vì không có lý do gì cả.
dùng253751

13
Nitpick: Hầu hết logic kỹ thuật số sử dụng điện áp, không phải dòng điện, để biểu diễn trạng thái logic.
duskwuff

11
bằng chứng giai thoại: Năm 2011 tôi đã có một chút hoán đổi trong một tập tin trên một hdd đã hoạt động tốt trong 5 năm.
PlasmaHH

7
Những công tắc tình cờ có thể khai thác. Giải thích của Google là một trường hợp thú vị cho việc này. Nó chắc chắn làm cho bảo mật khó khăn hơn rất nhiều khi API thực sự cho "Đặt bit X thành 1" là "Đặt bit X thành 1 và đôi khi vô tình đặt bit Y thành 1". Điều này cũng trở nên rất phổ biến trong trường hợp máy ép xung. Tôi nhớ lại một công ty thực sự đã thêm một loạt các tính toán (mọi khung hình) với các kết quả đã biết để xem liệu phần cứng có đủ tin cậy để chạy trò chơi hay không.
Brian

Câu trả lời:


100

Người ta thường nói rằng 0 và 1 được biểu thị bằng điện áp, nếu điện áp nằm trong khoảng [0, 0,9), thì đó là 0. Nếu điện áp nằm trong khoảng [0,9, 1,5), thì đó là 1 ( điện áp có thể thay đổi, tôi chỉ đưa ra một ví dụ).

Ở một mức độ nào đó, bạn chủ yếu tạo ra vấn đề này bằng cách sử dụng một ví dụ không thực tế. Có một khoảng cách lớn hơn nhiều giữa logic thấp và cao trong các mạch thực.

Ví dụ, logic 5V 5V sẽ tạo ra 0-0,2V cho mức logic thấp và 4,7-5V cho mức logic cao và sẽ luôn chấp nhận mọi thứ dưới 1,3V ở mức thấp hoặc cao hơn 3,7V. Đó là, có các lề trên đầu ra chặt chẽ hơn nhiều so với đầu vào và có một khoảng cách lớn giữa các điện áp có thể được sử dụng cho các tín hiệu thấp logic (<1.3V) và các mức có thể được sử dụng cho mức logic cao (> 3.7V) . Đây là tất cả được đặt ra cụ thể để tạo ra các khoản phụ cấp cho tiếng ồn và để ngăn chặn việc chuyển đổi ngẫu nhiên mà bạn đang mô tả.

Đây là một đại diện trực quan về các ngưỡng cho một loạt các tiêu chuẩn logic, mà tôi đã mượn từ interacebus.com :

Ngưỡng mức logic] [1]

Mỗi cột đại diện cho một tiêu chuẩn logic và trục dọc là điện áp. Đây là những gì mỗi màu đại diện:

  • Màu cam: Điện áp trong phạm vi này là đầu ra cho mức logic cao và sẽ được chấp nhận là mức logic cao.
  • Màu xanh nhạt: Điện áp trong phạm vi này sẽ được chấp nhận ở mức cao logic.
  • Màu hồng / xanh dương: Các điện áp trong phạm vi này sẽ không được giải thích một cách nhất quán, nhưng các điện áp trong khu vực màu hồng thường sẽ được hiểu là cao và các điện áp trong khu vực màu xanh thường sẽ thấp.
  • Màu xanh lục: Điện áp trong phạm vi này sẽ được chấp nhận ở mức thấp logic.
  • Màu vàng: Điện áp trong phạm vi này là đầu ra cho mức logic thấp và sẽ được hiểu là mức logic thấp.

4
Câu trả lời hay, mặc dù tôi nghĩ nó có thể hoàn thiện hơn: bạn chỉ bao gồm khả năng miễn nhiễm với (hay đúng hơn là bảo vệ chống lại) tiếng ồn. Có nhiều cơ chế khác chịu trách nhiệm cho các lỗi kỹ thuật số, và cũng giống như nhiều phương tiện bảo vệ. Điều tốt là, tôi đã không bao gồm khả năng miễn nhiễm với tiếng ồn trong câu trả lời của mình :)
Mister Mystère

1
@ MisterMystère Đó là sự thật! Tuy nhiên, sửa lỗi là một chủ đề rất lớn và tôi không thể bao gồm tất cả trong một câu trả lời.
duskwuff

1
@ MisterMystère: Chà, "tiếng ồn" là một thuật ngữ bao gồm tất cả các loại nguồn lỗi ngẫu nhiên. Các ví dụ của bạn về nhiễu EM và bức xạ vũ trụ thuộc loại "nhiễu" tốt. Nguyên nhân duy nhất khác của lỗi kỹ thuật số là do nguyên nhân xác định, mà chúng tôi gọi là "lỗi". Nhưng câu hỏi này chỉ là về các lỗi vô ý.
Ben Voigt

Trong viên đạn thứ ba của bạn, tôi tin rằng bạn có màu sắc hoặc logic được chuyển đổi. màu hồng nên thấp và màu xanh nên cao.
Guill

@ Guill Huh? Vùng màu hồng nằm trên V_T, do đó, nó sẽ không được coi là logic cao.
duskwuff

65

Chúng ta không thể. Chúng tôi chỉ giảm xác suất xảy ra lỗi bằng cách thêm kiểm tra vào dữ liệu. Tùy thuộc vào loại dữ liệu nào cần kiểm tra, nó có thể được thực hiện thông qua phần cứng hoặc phần mềm và có thể có bất kỳ hình thức nào từ các bit tổng kiểm tra đơn giản trong các luồng nối tiếp đến các máy trạng thái tuần hoàn chỉ cho phép thực hiện các chuyển đổi cụ thể tại bất kỳ thời điểm nào.

Nhưng đó là một vòng luẩn quẩn, phải không? Làm thế nào chúng ta có thể đảm bảo mạch phụ trách kiểm tra dữ liệu không bị ảnh hưởng bởi các nhiễu tương tự như dữ liệu và cho kết quả dương tính giả? Thêm một cái khác? Bạn có thể thấy làm thế nào điều này có thể trở nên khá tốn kém cho rất ít lợi ích cuối cùng.

Câu hỏi là: bạn muốn hệ thống của mình đáng tin đến mức nào? Vệ tinh, có nhúng một số hệ thống máy tính đáng tin cậy nhất hiện có, ví dụ, đôi khi dùng đến sự dư thừa của các hệ thống không giống nhau cũng như phiếu bầu: ba máy tính khác nhau chạy cùng một thuật toán được mã hóa bởi ba người khác nhau theo ba cách khác nhau và nếu một của các máy tính cho kết quả khác với hai máy tính khác, nó được khởi động lại (và nếu nó xảy ra lần nữa, bị cô lập). Nhưng một lần nữa, nếu hai máy tính bị lỗi cùng một lúc, thì máy tính sai sẽ được khởi động lại / cách ly. Thông thường, "dự phòng lạnh" là đủ: mạch sơ cấp và thứ cấp được triển khai, sơ cấp chạy cho đến khi phát hiện ra lỗi bởi một loại mạch giám sát (không được bảo vệ) và mạch thứ cấp bị tráo đổi. Nếu đó chỉ là lỗi trong RAM, mã có thể được chạy lại để làm mới dữ liệu. Bạn chỉ cần quyết định một cách khôn ngoan nơi vẽ đường kẻ, không thể tạo ra mạch phát hiện lỗi đáng tin cậy 100%.

Vệ tinh (đặc biệt là ở độ cao hoặc trong vành đai Van Allen) và máy tính trong các nhà máy hạt nhân hoặc môi trường phóng xạ khác đặc biệt phải tuân theo (từ khóa :) Sự kiện đơn lẻ hoặc chốt vì các hạt năng lượng cao va chạm hoặc bị hấp thụ bởi mạng tinh thể của chất bán dẫn . Sách bao gồm các lĩnh vực này chắc chắn sẽ là đặt cược tốt nhất của bạn. Sơn bị xuống cấp do thiệt hại do dịch chuyển từ bức xạ, do đó, hoàn toàn có thể hiểu rằng các chất bán dẫn cũng có thể bị hỏng hoặc khó chịu bởi bức xạ tới.


2
Tôi không chắc bạn có ý định viết 'vòng luẩn quẩn' không, nhưng 'vòng tròn nhớt' nghe có vẻ buồn cười không kém.
Svavil

1
Trên thực tế, đó là vòng tròn trực quan nhưng vòng tròn nhớt làm tôi cười :)
Mister Mystère

1
Nó chỉ mất các bit log n để có thể định vị và sửa một lỗi bit đơn trong n bit.
Thorbjørn Ravn Andersen

1
Điều này làm tôi nhớ đến một câu hỏi gần đây về việc viết chương trình để giải quyết các lỗi phần cứng trong máy tính tiếp xúc với các hợp chất phóng xạ: stackoverflow.com/questions/36827659/
Lỗi

Tôi không biết về các vệ tinh mà ba 'nhóm' khác nhau (hoặc nhiều hơn) đang mã hóa cùng một thứ theo một cách khác. Nghe hay đấy :)
kalmanIsAGameChanger

33

Sự kiện đơn lẻ không còn là vấn đề của không gian cũng như máy bay; chúng ta đã thấy chúng xảy ra trên bề mặt trong hơn một thập kỷ, có thể là hai giờ.

Như đã đề cập, ít nhất là trong các ứng dụng không gian, chúng tôi xử lý các đảo lộn bằng cách sử dụng biểu quyết ba lần (mỗi bit thực sự là ba và hai phần ba phiếu bầu sẽ thắng, vì vậy nếu có một thay đổi thì hai phần còn lại sẽ bao trùm nó.). Và sau đó là ECC hoặc EDAC , với các bộ lọc đi qua RAM với tốc độ cao hơn tốc độ cập nhật sự kiện duy nhất được dự đoán để làm sạch các sự kiện đơn lẻ (những điều thực sự khiến hai phần ba bỏ phiếu sai).

Sau đó là tổng liều; theo thời gian vật liệu chỉ bị quá phóng xạ để hoạt động, vì vậy bạn sử dụng đủ vật liệu để vượt quá tuổi thọ của xe. Không có gì chúng ta lo lắng trên bề mặt bình thường. (Và chốt) Sử dụng song song ba / nhiều bộ logic là / là một cách để cố gắng không phải sử dụng công nghệ rad-hard truyền thống, và, bạn có thể thấy nó hoạt động tốt như thế nào.

Những người đã từng biết cách chế tạo đồ đạc cho không gian phần lớn đã nghỉ hưu hoặc chuyển sang, vì vậy chúng tôi có một số chương trình tạo không gian rác ngay bây giờ. Hoặc đối xử với không gian như các sản phẩm trên trái đất, thay vì cố gắng tạo ra mọi người trong công việc và có sự tái nhập và đốt cháy có kiểm soát, giờ đây chúng ta mong đợi một lượng rác không gian nhất định trong mỗi chòm sao.

Chúng tôi thấy khó chịu trên bề mặt. Bất kỳ thẻ nhớ ( DRAM ) nào bạn mua đều có FIT, Failures In Time và bất kỳ chip nào có RAM trong đó (tất cả các bộ xử lý, nhiều loại khác), cũng sẽ có thông số FIT ​​(đối với các khối RAM (SRAM)). RAM dày đặc hơn và sử dụng các bóng bán dẫn nhỏ hơn, do đó dễ bị đảo lộn, tạo ra bên trong hoặc bên ngoài. Hầu hết thời gian chúng tôi không chú ý hoặc quan tâm vì bộ nhớ chúng tôi sử dụng cho dữ liệu, xem video, v.v. được ghi lại, đọc lại và không được sử dụng lại trước khi nó đủ lâu để gây khó chịu. Một số bộ nhớ, như một người đang giữ một chương trình hoặc kernel, có nhiều rủi ro hơn. Nhưng từ lâu chúng ta đã quen với ý tưởng chỉ cần khởi động lại máy tính hoặc đặt lại / khởi động lại điện thoại của chúng tôi (một số điện thoại / nhãn hiệu bạn sẽ phải thường xuyên tháo pin định kỳ). Là những khó chịu hoặc phần mềm xấu hoặc một sự kết hợp?

Số FIT ​​cho sản phẩm riêng lẻ của bạn có thể vượt quá tuổi thọ của sản phẩm đó, nhưng hãy sử dụng trang trại máy chủ lớn, bạn tính đến tất cả RAM hoặc chip hoặc bất cứ điều gì và MTBF đi từ nhiều năm hoặc đặt hàng qua đó, đến ngày hoặc giờ, ở đâu đó trong nông trại. Và bạn có ECC để trang trải những gì bạn có thể làm. Và sau đó, bạn phân phối tải xử lý với các lỗi dự phòng để trang trải cho các máy hoặc phần mềm không hoàn thành nhiệm vụ.

Mong muốn lưu trữ trạng thái rắn và chuyển từ phương tiện kéo sợi đã tạo ra một vấn đề liên quan đến vấn đề này. Bộ lưu trữ được sử dụng cho SSD (và bộ lưu trữ không bay hơi khác) để nhanh hơn và rẻ hơn, dễ bay hơi hơn nhiều so với chúng tôi mong muốn và dựa vào EDAC, vì chúng tôi sẽ mất dữ liệu nếu không có nó. Họ ném rất nhiều bit vào và làm hỏng toàn bộ, làm toán để cân bằng tốc độ, chi phí và tuổi thọ của việc lưu trữ. Tôi không thấy chúng tôi quay lại; mọi người muốn lưu trữ nhiều hơn không bay hơi ở mọi nơi phù hợp với một gói nhỏ và không chi phối giá của sản phẩm.

Theo như các mạch thông thường, từ những ngày đầu sử dụng bóng bán dẫn cho các mạch kỹ thuật số cho đến hiện tại, chúng tôi đi qua phần tuyến tính của bóng bán dẫn và sử dụng nó như một công tắc, chúng tôi đập nó giữa các đường ray với một số dư thừa để đảm bảo nó dính vào . Giống như công tắc đèn trên tường của bạn, bạn lật nó hơn một nửa lò xo giúp phần còn lại và giữ nó ở đó. Đây là lý do tại sao chúng tôi sử dụng kỹ thuật số và không cố gắng sống trong khu vực tuyến tính; họ đã cố gắng sớm, nhưng không thành công. Họ không thể hiệu chỉnh.

Vì vậy, chúng tôi chỉ cần đặt bóng bán dẫn vào đường ray của nó và cả hai mặt của tín hiệu sẽ ổn định theo chu kỳ xung nhịp tiếp theo. Những nỗi đau lớn đã được thực hiện, và các công cụ hiện tại tốt hơn đáng kể so với trước đây, khi thực hiện phân tích thiết kế chip, để thấy rằng theo thiết kế có biên độ về thời gian. Sau đó kiểm tra từng khuôn trên mỗi wafer (đó và / hoặc sau khi đóng gói), để thấy rằng mỗi chip đều tốt.

Công nghệ chip phụ thuộc rất nhiều vào số liệu thống kê dựa trên các thí nghiệm. Khi bạn ép xung CPU của mình, bạn cũng sẽ đạt được mức chênh lệch đó, nằm trong tốc độ xung nhịp được quảng cáo, nhiệt độ, v.v. và khả năng bạn gặp sự cố sẽ thấp hơn đáng kể. Bộ xử lý xyz 3 GHz chỉ đơn giản là chip 4 GHz bị lỗi ở tốc độ 4 GHz nhưng được truyền ở tốc độ 3 GHz. Các bộ phận được phân loại tốc độ cơ bản từ một dây chuyền sản xuất.

Sau đó, có các kết nối giữa chip hoặc bo mạch, và chúng cũng gặp vấn đề, và rất nhiều thời gian và nỗ lực để tạo ra các tiêu chuẩn và thiết kế bảng, v.v., để giảm thiểu lỗi trên các giao diện đó. USB , bàn phím, chuột, HDMI , SATA , v.v. Cũng như tất cả các dấu vết trên bảng. Trên và ngoài bảng bạn có vấn đề xuyên âm; một lần nữa, rất nhiều công cụ có sẵn nếu bạn sử dụng chúng cũng như kinh nghiệm trong việc tránh các vấn đề ở nơi đầu tiên, nhưng một cách khác mà chúng ta có thể không thấy các công cụ và số không được tham gia đầy đủ.

Không có công nghệ nào, kể cả không gian, là hoàn hảo. Nó chỉ phải đủ tốt, đủ một tỷ lệ phần trăm của sản phẩm phải đủ để đáp ứng đủ tuổi thọ dự kiến ​​của sản phẩm. Một số phần trăm của điện thoại thông minh phải làm cho nó ít nhất hai năm, và đó là nó. Các xưởng đúc cũ hoặc công nghệ có nhiều dữ liệu thử nghiệm hơn và có thể tạo ra một sản phẩm đáng tin cậy hơn, nhưng nó chậm hơn và có thể không phải là thiết kế mới, vì vậy bạn hãy đi. Điểm mấu chốt chỉ là, một canh bạc cho tất cả mọi người.

Đối với câu hỏi cụ thể của bạn, các bóng bán dẫn ở mỗi đầu của tín hiệu được đẩy nhanh qua vùng tuyến tính của chúng và nghiêng vào một trong các đường ray. Phân tích được thực hiện trên mọi đường dẫn tổ hợp để xác định rằng nó sẽ ổn định trước khi đồng hồ ở cuối đường dẫn chốt, để nó thực sự được tạo thành 0 hoặc 1. Việc phân tích dựa trên các thí nghiệm. Các chip đầu tiên của một dòng sản phẩm được đẩy ra ngoài ranh giới thiết kế, các sơ đồ schmoo được thực hiện để xác định có biên độ trong thiết kế. Biến thể về quy trình được thực hiện và / hoặc các ứng cử viên riêng lẻ được tìm thấy đại diện cho các chip chậm và nhanh. Đó là một quá trình phức tạp và một số có nhiều vật liệu hơn, một số có ít hơn, chạy nhanh hơn nhưng sử dụng nhiều năng lượng hơn hoặc chạy chậm hơn, v.v.

Bạn đẩy những người đến lề là tốt. Và về cơ bản có được một cảm giác mờ ấm áp rằng thiết kế là ổn để đi vào sản xuất. JTAG / quét ranh giới được sử dụng để chạy các mẫu ngẫu nhiên thông qua các chip giữa mỗi trạng thái chốt để xem các đường dẫn tổ hợp hoàn toàn vững chắc cho một thiết kế. Và khi có mối quan tâm, một số xét nghiệm chức năng theo chỉ đạo cũng có thể xảy ra. Thử nghiệm thêm về silicon đầu tiên và có lẽ là thử nghiệm ngẫu nhiên để đảm bảo sản phẩm tốt. Nếu / khi xảy ra lỗi, điều đó có thể đẩy bạn trở lại các bài kiểm tra chức năng hơn trên dây chuyền sản xuất. Nó phụ thuộc rất nhiều vào số liệu thống kê / tỷ lệ phần trăm. 1/1000000 những người xấu nhận ra có thể ổn hoặc 1/1000 hoặc bất cứ điều gì; nó phụ thuộc vào số lượng bạn nghĩ bạn sẽ sản xuất con chip đó.

Các lỗ hổng được đề cập ở đây và với những người khác. Đầu tiên là bản thân con chip, thiết kế và quy trình tốt như thế nào, gần với lề là con đường yếu nhất của một con chip cụ thể trong sản phẩm bạn đã mua. Nếu quá gần cạnh thì thay đổi nhiệt độ hoặc khác có thể gây ra vấn đề về thời gian và các bit sẽ chốt dữ liệu chưa được xử lý thành một hoặc không. Sau đó là những sự kiện đơn lẻ. Và sau đó là tiếng ồn. một lần nữa những thứ đã được đề cập ...


4
Đoạn đầu tiên của bạn nghe có vẻ như không còn vấn đề gì với môi trường hàng không vũ trụ, trong khi tôi nghĩ rằng bạn có nghĩa là SEU không còn chỉ trải nghiệm trong những môi trường đó nữa.
W5VO

Lưu ý rằng SEU có thể được gây ra từ chất hàn SnPb trên các máy phát điện do một số chì là một phần của chuỗi phân rã Uranium khá khác biệt so với hoạt động neutron tự do.
Peter Smith

@ W5VO, vâng, ý tôi là sự đảo lộn do phóng xạ không còn chỉ là vấn đề không gian, chúng là vấn đề xuyên suốt bề mặt. Không tệ như trong không gian, nhưng hiện tại.
old_timer

1
Tôi dường như nhớ lại rằng một số xe buýt máy tính mini DEC có vấn đề với tính di động trong thực tế. Đó là một cơ chế riêng biệt cho các lỗi bit từ những người bạn đã đặt tên, phải không? Hay không?
davidbak

2
@davidbak: Khả năng siêu bền là vấn đề khó chịu mà ảnh hưởng phổ biến nhất là trong trường hợp giá trị của một số bit phụ thuộc vào việc một số đầu vào thấp hay cao trong một thời gian gần đây, có thể tất cả không chuyển đổi theo kiểu phù hợp với đầu vào thấp, cũng không theo xu hướng phù hợp với nó cao, nhưng thay vào đó có thể mang lại một hỗn hợp tùy ý của hai hành vi. Ví dụ, nếu mã được cho là phân nhánh khi nhấn nút, các bit của bộ đếm chương trình có thể sẽ giữ một hỗn hợp tùy ý các giá trị mà chúng sẽ có nếu nút được nhấn hoặc nếu không.
supercat

12

Nếu bạn đang sau một câu trả lời đơn giản:

Mỗi thành phần kỹ thuật số trong máy tính bị hạn chế nhiều hơn ở các đầu ra mà nó tạo ra, hơn là các đầu vào mà nó chấp nhận. Ví dụ: mọi giá trị "đầu vào" từ 0V đến 2V sẽ được chấp nhận là 0, nhưng "đầu ra" bằng 0 sẽ luôn nằm trong phạm vi 0 đến 0,5V. (Xem câu trả lời của duskwuff cho một số giá trị thực tế.)

Điều này có nghĩa là mỗi thành phần giúp "sửa" cho một số sai lệch hoặc nhiễu đã xảy ra dọc theo đường. Tất nhiên, nếu tiếng ồn đủ lớn, hệ thống không thể bù. Máy tính trong môi trường bức xạ cao có thể bị ảnh hưởng thường xuyên bởi 1s thay đổi thành 0 và ngược lại.

Về cơ bản, máy tính được thiết kế để chịu được mức độ nhiễu / nhiễu nhất định , đủ tốt cho hầu hết các mục đích thực tế.


8

Về mặt lý thuyết, các tín hiệu có thể thay đổi giữa 0 và 1 do nhiễu nhiệt (và khác), tuy nhiên điều này cực kỳ khó xảy ra.

Các mạch kỹ thuật số được thiết kế với một thuộc tính gọi là 'lề nhiễu'. Đây là số lượng mà đầu vào của nó phải thay đổi trước khi trạng thái lật đầu ra. Nói chung trong các mạch CMOS, đây là khoảng 50% điện áp cung cấp. Tiếng ồn nhiệt không thể tránh được (đến từ các electron di chuyển xung quanh ở bất kỳ nhiệt độ nào trên 0 kelvin) trong các mạch này tạo ra tiếng ồn << 1 mV và xác suất các xung này có thể vượt quá (giả sử) 500 mV, là cực kỳ nhỏ.

Các cổng kỹ thuật số (ví dụ: CMOS) có các đặc tính khuếch đại và bão hòa. Điều này có nghĩa là khi tín hiệu đầu vào ở gần giữa dải, đầu ra thay đổi nhanh (mức tăng cao), nhưng khi nó ở gần cực trị của phạm vi, nó sẽ thay đổi chậm. Kết quả của điều này là khi tín hiệu đầu vào 'gần' với đường ray, đầu ra thậm chí còn gần hơn - điều này có nghĩa là nhiễu không được khuếch đại.

Các tính năng khác được đề cập ở trên (sửa lỗi, v.v.) có nghĩa là lỗi ngay cả khi chúng xảy ra, không lan truyền.


4

Trong các hệ thống dễ bị lỗi như các kênh liên lạc và lưu trữ từ tính (và đôi khi là RAM), tổng kiểm tra, CRC hoặc ECC được lưu trữ để từ chối dữ liệu xấu hoặc sửa các lỗi nhỏ.

Nói chung, các hệ thống nhị phân được thiết kế sao cho điều này là không thể, nhưng một lần trong vài triệu hoặc tỷ * lần tia vũ trụ hoặc một đốm nhiễu sẽ đẩy mọi thứ qua đường, việc phát hiện / sửa lỗi là cần thiết để giữ tham nhũng từ ảnh hưởng đến máy tính một cách nghiêm trọng.

* Các kênh truyền thông có thể có tỷ lệ lỗi cao hơn nhiều!


4

Phần cứng máy tính đã trở nên mạnh mẽ và đáng tin cậy hơn. Nhưng phần cứng là quá rộng cho một câu trả lời đơn giản. Tuy nhiên, có thể quan tâm khi biết có sự khác biệt về độ tin cậy giữa máy tính để bàn thông thường và máy tính doanh nghiệp. Tôi tìm thấy này câu hỏi / trả lời chủ đề về phần cứng máy chủ. Một máy chủ sẽ có giá cao gấp nhiều lần so với mặt bàn tương đương. Chi phí là kết quả của phần cứng tốt hơn có khả năng bất ngờ "chuyển đổi 1 và 0" nhiều lần.

Nhưng phần cứng chỉ là một nửa câu chuyện. Máy tính cũng có thể bảo vệ dữ liệu khỏi các lỗi không mong muốn bằng phần mềm. Mã Hamming là một ví dụ trong đó, bằng cách thêm một lượng nhỏ dữ liệu bổ sung, một số lượng nhỏ lỗi không chỉ có thể được phát hiện mà còn được sửa chữa.


ngoại trừ đèn flash MLC, nơi độ tin cậy được giao dịch theo mật độ,
Jasen

3

hai cách thường được sử dụng để giảm thiểu xác suất một bit logic sẽ vô tình được chuyển đổi (0 thành 1 hoặc 1 thành 0).
Đầu tiên là bằng cách cung cấp một khoảng cách lớn , giữa các mức điện áp được xác định cho 0 và 1, càng tốt . Như bạn đã đề cập, 0 được định nghĩa là mức điện áp <.9v, trong khi 1 được xác định là mức điện áp> 2.9v (không phải như bạn nói .9 đến 1.5). Điều này để lại một khoảng cách điện áp 2v. Điều này có nghĩa là điện áp tín hiệu sẽ phải thay đổi 200% , trước khi nó "vô tình" chuyển trạng thái của bit (rất khó xảy ra).
Thứ hai là bằng cách "bấm giờ"các tín hiệu logic. Vì điện áp / nhiễu "ngẫu nhiên" là ngẫu nhiên và tồn tại trong thời gian ngắn, bằng cách chỉ cho phép thay đổi trạng thái tại các khoảng thời gian cụ thể (và ngắn), xác suất của "biến thể" nhấn tại thời điểm đồng hồ được giảm thiểu.

Tất nhiên, có các phương tiện và phương pháp khác được sử dụng, tùy thuộc vào mức độ tin cậy cần thiết (ECD, ECC, v.v.).


2

Kỹ thuật tốt.

Rất nhiều nỗ lực đi vào một thiết kế để ngăn ngừa hỏng dữ liệu hoặc sửa nó khi không thể ngăn chặn đủ (ví dụ: bộ nhớ ECC ).

Những thứ có thể gây ra tham nhũng dữ liệu bao gồm:

  • môi trường ồn ào điện
  • các vấn đề liên quan đến quyền lực
  • vấn đề thời gian (ví dụ giữa đồng hồ và dòng dữ liệu hoặc giữa hai dòng vi phân)
  • nói chuyện điện

Nói tóm lại, rất nhiều kỹ thuật đã đi vào các thiết kế kỹ thuật số để các kỹ sư phần mềm có thể đưa ra giả định đơn giản rằng '0' có nghĩa là '0' và '1' có nghĩa là '1'.


Và tất nhiên, bộ nhớ ECC cũng có thể thực hiện những điều thú vị như kích hoạt ngắt không thể che dấu (NMI) nếu nhiều bit bị hỏng hơn mức có thể sửa chữa. Tôi nghĩ đối với RAM ECC hiện đại, đây là lỗi nhiều hơn một bit trong 64 bit (mã hóa có thể sửa lỗi một bit và phát hiện nhưng không sửa lỗi hai bit), nhưng tôi có thể sai về điều đó. Trong trường hợp bạn quan tâm đến dữ liệu của mình, tạm dừng hệ thống ngay lập tức nếu có gì đó không ổn sau khi sửa chữa có thể tốt hơn là nên đi khập khiễng không biết liệu dữ liệu có thể tin cậy được không (hoặc tệ hơn, biết rằng nó không thể tin cậy được).
một CVn

2

Hai khía cạnh cơ bản của máy tính điện tử thực tế là:

  1. Một nguồn cung cấp năng lượng rất ổn định

  2. Thời gian (thường được xác định là tần số đồng hồ hoặc độ trễ)

Nguồn cung cấp cho các hệ thống máy tính được quy định và quy định rất nghiêm ngặt. Trong thực tế, đối với bất kỳ hệ thống máy tính nào, việc cung cấp năng lượng thường được quy định nhiều lần: tại nguồn điện (hoặc bộ sạc pin), ở đầu vào chính của bo mạch chủ, ở đầu vào thẻ con gái và cuối cùng là trên chính con chip.

Điều này giúp loại bỏ rất nhiều tiếng ồn (biến động điện). Những gì CPU nhìn thấy là một nguồn điện áp rất ổn định, không bay hơi mà nó có thể sử dụng để xử lý logic.

Nguồn chính tiếp theo của các giá trị trung gian (điện áp giữa giá trị 0 hoặc 1) xuất hiện khi giá trị chuyển tiếp. Hoặc 1 thay đổi thành 0 (thời gian rơi) hoặc 0 thay đổi thành 1 (thời gian tăng). Bạn thực sự không thể làm gì nhiều về nó ngoại trừ chờ quá trình chuyển đổi kết thúc trước khi chấp nhận đầu ra của mạch. Trước khi quá trình chuyển đổi hoàn thành, đầu ra của mạch được coi là rác.

Trong kỹ thuật, giải pháp cho vấn đề này là chỉ cần viết khoảng thời gian bạn cần đợi cho kết quả chính xác trên giấy. Đây là nguồn gốc của tần số xung nhịp CPU. Bạn có thể chạy CPU bao nhiêu GHz tùy thuộc vào thời gian cần thiết để các thay đổi trạng thái trong CPU ổn định.

Thực sự có một nguồn biến động thứ ba: đầu vào vào mạch. Giải pháp cho vấn đề đó tương tự như vấn đề chung ở trên: đảm bảo tín hiệu (điện áp hoặc dòng điện) đi vào hệ thống ổn định và đảm bảo tín hiệu có đủ thời gian để ổn định.

Phần thứ hai của vấn đề là tại sao chúng ta lấy mẫu đầu vào thành chốt hoặc thanh ghi trước khi xử lý. Tín hiệu có thể là rác. Nhưng chúng sẽ là 0 hoặc 1 rác ở bên trong các thanh ghi khi chúng được xử lý. Phần đầu tiên của vấn đề là bảo hành là gì.


2

Nhưng tôi không bao giờ đọc những gì giữ cho điện áp "hoạt động tốt" theo cách 0 không bao giờ có thể vô tình trở thành 1 do biến động điện 1 bên trong máy tính. Có lẽ điện áp rất gần 0,9, vậy thì phải làm gì để tránh nó vượt qua ngưỡng?

Phản hồi là thứ ngăn cản nó tiếp cận điện áp ngưỡng và buộc nó phải được xử lý tốt.

Điều này thường ở dạng một mạch chốt của một số loại, thường là một mạch chốt đồng hồ.

Một ví dụ đơn giản, hãy xem xét flip-flop . Nó được thiết kế sao cho đầu ra được đưa trở lại vào mạch logic dưới dạng đầu vào bổ sung. Do đó, logic bên trong phần tử biết những gì nó xuất ra và nó sẽ tiếp tục xuất ra cùng một giá trị cho đến khi các đầu vào khác buộc nó vào trạng thái ngược lại.

Do mạch được thiết kế để các bóng bán dẫn được bật hoặc tắt hoàn toàn, nên nó sẽ luôn xuất ra gần giới hạn nguồn và giới hạn mặt đất - nó sẽ không đi gần mức 0,9v và khi chuyển đổi, nó sẽ di chuyển nhanh và hoàn toàn sang nhà nước khác. Các mạch được thiết kế đặc biệt để tránh hoạt động trong khu vực tương tự giữa hai trạng thái.


0

Trong điều kiện hoạt động bình thường, 0 và 1 hiếm khi bị trục trặc, nhưng trong điều kiện hoạt động kém (tức là pin yếu hoặc thời gian ngắn sau khi ngắt nguồn AC và điện áp trong tụ bị giảm), những điều kỳ lạ xảy ra và 0 và 1 bị rối mọi lúc

Vì lý do này, nếu bạn đang viết mã phòng thủ (phần mềm hoặc HDL) mà bạn không muốn khóa, bạn nên luôn luôn xem xét trường hợp một số có thể bị trục trặc. Ví dụ,

while(1)
{
  i++;
  do something here
  if (i == 10) break;
}

tốt hơn là thay đổi ==thành >= chỉ trong trường hợp giá trị của các ibước nhảy từ 9 đến 11 hoặc bất kỳ số nào lớn hơn 10, điều này sẽ khiến bạn không bao giờ thoát khỏi vòng lặp cho đến khi ikết thúc thành 0 (nói sau 4 tỷ lần lặp).

while(1)
{
  i++;
  do something here
  if (i >= 10) break;
}

Nó xảy ra, tin tôi đi ...


Điều gì nếu inhảy đến một số âm lớn?
Jasen
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.