Bagaimana kita bisa yakin bahwa komputer tidak akan pernah secara tidak sengaja mengganti angka 0 dengan angka 1?

63

Saya telah membaca sedikit tentang pembangunan komputer digital di Shocken / Nisan's: The Elements of Computing Systems . Tetapi buku ini tidak mengatakan apa-apa tentang aspek kelistrikan tertentu di komputer, misalnya: Sering dikatakan bahwa 0 dan 1 diwakili oleh tegangan, jika tegangan berada dalam interval [0, 0,9), maka itu adalah 0. dalam interval [0,9, 1,5), maka itu adalah 1 (tegangan dapat bervariasi, saya hanya memberikan contoh).

Tapi saya tidak pernah membaca apa yang membuat voltase listrik "berperilaku baik" dengan cara yang 0 tidak pernah bisa secara tidak sengaja menjadi 1 karena volatilitas listrik [1] di dalam komputer. Mungkin tegangan sangat dekat 0,9, lalu apa yang dilakukan untuk menghindarinya melewati ambang batas?

[1]: Seandainya itu ada.

Billy Rubina
sumber
7
Arus tidak pernah sangat dekat 0,9, karena tidak ada yang pernah membuat arus sangat dekat 0,9.
user253751
7
Karena semuanya dirancang untuk tidak menghasilkan arus yang sangat dekat 0,9. Anda mungkin juga bertanya, "Saya punya bukti empiris yang kuat bahwa laptop saya tidak dikenakan biaya 50 gigavolt; mengapa tidak?" Hanya karena tidak ada alasan untuk itu.
user253751
13
Nitpick: Kebanyakan logika digital menggunakan voltase, bukan arus, untuk merepresentasikan keadaan logis.
duskwuff
11
bukti anekdotal: Pada tahun 2011 saya sedikit bertukar file pada hdd yang berfungsi dengan baik selama 5 tahun.
PlasmaHH
7
Sakelar yang tidak disengaja ini dapat dieksploitasi. Penjelasan Google adalah kasus yang menarik untuk ini. Itu pasti membuat keamanan jauh lebih sulit ketika API nyata untuk "Set bit X ke 1" adalah "Set bit X ke 1 dan kadang-kadang secara tidak sengaja mengatur bit Y ke 1". Ini juga menjadi sangat umum dalam kasus mesin overclock. Saya ingat satu perusahaan benar-benar menambahkan banyak perhitungan (setiap frame) dengan hasil yang diketahui untuk melihat apakah perangkat keras itu cukup andal untuk menjalankan permainan.
Brian

Jawaban:

100

Sering dikatakan bahwa 0's dan 1's diwakili oleh tegangan, jika tegangan berada dalam interval [0, 0,9), maka itu adalah 0. Jika tegangan berada dalam interval [0,9, 1,5), maka itu adalah 1 ( tegangan dapat bervariasi, saya hanya memberikan contoh).

Untuk tingkat tertentu, Anda sebagian besar telah menciptakan masalah ini dengan menggunakan contoh yang tidak realistis. Ada kesenjangan yang jauh lebih besar antara sirkuit logika rendah dan tinggi.

Misalnya, logika 5V CMOS akan menghasilkan 0-0.2V untuk logika rendah dan 4.7-5V untuk logika tinggi, dan secara konsisten akan menerima apa pun di bawah 1.3V sebagai rendah atau apa pun di atas 3.7V sebagai tinggi. Artinya, ada banyak margin yang lebih ketat pada output daripada input, dan ada celah besar yang tersisa antara voltase yang mungkin digunakan untuk sinyal logis rendah (<1,3V) dan yang mungkin digunakan untuk logis tinggi (> 3,7V) . Ini semua ditata secara khusus untuk memungkinkan kebisingan, dan untuk mencegah jenis pergantian tidak disengaja yang Anda gambarkan.

Berikut adalah representasi visual dari ambang batas untuk berbagai standar logika, yang saya pinjam dari interfacebus.com :

Ambang level logika] [1]

Setiap kolom mewakili satu standar logika, dan sumbu vertikal adalah tegangan. Inilah yang masing-masing warna wakili:

  • Oranye: Tegangan dalam kisaran ini adalah output untuk logis tinggi, dan akan diterima sebagai logis tinggi.
  • Hijau muda: Tegangan dalam kisaran ini akan diterima sebagai logis tinggi.
  • Merah muda / biru: Tegangan dalam kisaran ini tidak akan ditafsirkan secara konsisten, tetapi yang di daerah merah muda biasanya akan berakhir ditafsirkan sebagai tinggi, dan yang di daerah biru biasanya akan rendah.
  • Hijau kebiru-biruan: Tegangan dalam kisaran ini akan diterima sebagai logis rendah.
  • Kuning: Tegangan dalam kisaran ini adalah output untuk logis rendah, dan akan ditafsirkan sebagai logis rendah.
duskwuff
sumber
4
Jawaban yang bagus, meskipun saya pikir itu bisa lebih lengkap: Anda hanya menutupi kekebalan terhadap (atau lebih tepatnya, perlindungan terhadap) kebisingan. Ada banyak mekanisme lain yang bertanggung jawab atas kesalahan digital, dan juga banyak cara perlindungan. Hal yang baik adalah, saya tidak menutupi kekebalan terhadap suara dalam jawaban saya :)
Mister Mystère
1
@ MisterMystère Itu benar! Koreksi kesalahan adalah topik yang sangat besar, dan saya tidak mungkin membahas semuanya dalam satu jawaban.
duskwuff
1
@ MisterMystère: Ya, "noise" adalah istilah yang mencakup semua jenis sumber kesalahan stokastik. Contoh-contoh Anda dari gangguan EM dan radiasi kosmik termasuk dalam kategori "noise". Satu-satunya penyebab kesalahan digital lainnya adalah faktor deterministik, yang kami sebut "bug". Tetapi pertanyaan ini hanya tentang kesalahan yang tidak disengaja.
Ben Voigt
Dalam peluru ketiga Anda, saya yakin Anda memiliki warna atau logika yang berubah. merah muda harus rendah dan biru harus tinggi.
Guill
@ Mau Hah? Wilayah merah muda di atas V_T, sehingga tidak dapat dipercaya diperlakukan sebagai logis tinggi.
duskwuff
65

Kita tidak bisa. Kami hanya mengurangi kemungkinan kesalahan dengan menambahkan cek ke data. Bergantung pada tipe data apa yang akan diperiksa, dapat dilakukan melalui perangkat keras atau perangkat lunak, dan dapat mengambil bentuk apa pun dari bit checksum sederhana dalam aliran serial ke mesin keadaan siklik yang memungkinkan hanya transisi khusus yang dibuat pada waktu tertentu.

Tapi itu lingkaran setan, bukan? Bagaimana kita memastikan bahwa sirkuit yang bertugas memeriksa data tidak terpengaruh oleh gangguan yang sama seperti data dan memberikan hasil positif palsu? Menambahkan yang lain? Anda dapat melihat bagaimana ini bisa menjadi sangat mahal untuk mendapatkan sangat sedikit pada akhirnya.

Pertanyaannya adalah: seberapa andal yang Anda inginkan dari sistem Anda? Satelit, yang menanamkan beberapa sistem komputer yang paling andal yang tersedia, misalnya kadang-kadang beralih ke sistem redundansi yang tidak identik serta suara: tiga komputer yang berbeda menjalankan algoritma yang sama yang dikodekan oleh tiga orang yang berbeda dalam tiga cara yang berbeda, dan jika satu komputer memberikan hasil yang berbeda dari dua lainnya, itu di-restart (dan jika itu terjadi lagi, terisolasi). Tetapi sekali lagi, jika dua komputer rusak pada saat yang sama, maka komputer yang salah akan dihidupkan ulang / diisolasi. Biasanya, "redundansi dingin" sudah cukup: sirkuit primer dan sekunder diimplementasikan, primer berjalan hingga kesalahan terdeteksi oleh beberapa jenis sirkuit pemantauan (tidak dilindungi) dan sirkuit sekunder diganti. Jika itu hanya kesalahan dalam RAM, kode dapat dijalankan kembali untuk menyegarkan data. Anda baru saja harus memutuskan dengan bijak di mana harus menarik garis, tidak mungkin untuk membuat sirkuit deteksi kesalahan yang dapat diandalkan 100%.

Satelit (terutama di dataran tinggi atau di sabuk Van Allen) dan komputer di pabrik nuklir atau lingkungan radioaktif lainnya secara khusus tunduk pada (kata kunci :) Single Event Upsets atau latchup karena partikel energi tinggi bertabrakan dengan atau diserap oleh kisi-kisi kristal semikonduktor. . Buku-buku yang membahas bidang-bidang ini tentu akan menjadi pilihan terbaik Anda. Cat terdegradasi oleh kerusakan perpindahan dari radiasi, sehingga dapat dipahami bahwa semikonduktor dapat rusak atau terganggu oleh radiasi yang masuk.

Tuan Mystère
sumber
2
Saya tidak yakin apakah Anda bermaksud menulis 'lingkaran setan', tetapi 'lingkaran kental' terdengar sama lucu.
svavil
1
Sebenarnya itu adalah lingkaran yang terlihat tetapi lingkaran yang kental membuat saya tertawa :)
Mister Mystère
1
Hanya membutuhkan log n bit untuk dapat menemukan dan memperbaiki kesalahan bit tunggal dalam n bit.
Thorbjørn Ravn Andersen
1
Ini mengingatkan saya pada pertanyaan baru-baru ini tentang menulis program untuk memperhitungkan kesalahan perangkat keras di komputer yang terpapar senyawa radioaktif: stackoverflow.com/questions/36827659/…
Pharap
Saya tidak tahu tentang satelit bahwa tiga 'kelompok' yang berbeda (atau lebih) mengkode hal yang sama dengan cara yang berbeda. Kedengarannya keren :)
kalmanIsAGameChanger
33

Satu gangguan acara bukan lagi masalah ruang atau pesawat terbang; kami telah melihat mereka terjadi di permukaan selama lebih dari satu dekade, mungkin dua sekarang.

Seperti yang disebutkan, setidaknya dalam aplikasi luar angkasa kita berurusan dengan gangguan menggunakan triple voting (masing-masing bit benar-benar tiga, dan dua pertiga suara menang, jadi jika ada satu yang berubah, dua lainnya akan menutupinya.). Dan kemudian ECC atau EDAC , dengan scrubber yang melalui RAM pada tingkat yang lebih tinggi dari tingkat pembaruan acara tunggal yang diprediksi untuk membersihkan gangguan peristiwa tunggal (yang benar-benar mendorong dua pertiga suara salah).

Lalu ada dosis total; lama-kelamaan material tersebut menjadi terlalu radioaktif untuk bekerja, jadi Anda menggunakan material yang cukup untuk melampaui umur kendaraan. Bukan sesuatu yang kita khawatirkan di permukaan secara normal. (Dan latchup) Menggunakan tiga / beberapa set logika secara paralel adalah / adalah cara untuk mencoba tidak harus menggunakan teknologi rad-hard tradisional, dan yah, Anda dapat menemukan seberapa baik yang bekerja.

Orang-orang yang dulu tahu cara membuat barang untuk ruang sebagian besar sudah pensiun atau pindah, jadi kami memiliki sejumlah program yang membuat sampah ruang sekarang. Atau memperlakukan ruang seperti produk yang dibumikan, alih-alih mencoba membuat semua orang bekerja dan memiliki pemasukan dan pembakaran kembali yang terkontrol, kami sekarang mengharapkan sejumlah ruang sampah keluar dari setiap rasi bintang.

Kami memang melihat kesal di permukaan. Memory stick ( DRAM ) yang Anda beli memiliki FIT, Failures In Time, dan setiap chip dengan RAM di dalamnya (semua prosesor, banyak lainnya), akan memiliki spesifikasi FIT juga (untuk blok RAM (SRAM)). RAM lebih padat dan menggunakan transistor yang lebih kecil, sehingga lebih rentan terhadap gangguan, dibuat secara internal atau eksternal. Sebagian besar waktu kita tidak melihat atau peduli karena memori yang kita gunakan untuk data, menonton video, dll ditulis, dibaca kembali dan tidak digunakan lagi sebelum itu duduk cukup lama untuk memiliki gangguan. Sebagian memori, seperti yang memegang program atau kernel, lebih berisiko. Tapi kami sudah lama terbiasa dengan ide hanya me-reboot komputer kami atau me-reset / me-reboot ponsel kami (beberapa ponsel / merek Anda harus secara teratur melepas baterai secara berkala). Apakah ini gangguan atau perangkat lunak yang buruk atau kombinasi?

Angka-angka FIT untuk produk individual Anda mungkin melebihi umur produk itu, tetapi gunakan server server yang besar, Anda memperhitungkan semua RAM atau chip atau apa pun dan MTBF berubah dari tahun atau pesanan yang melewati itu, menjadi berhari-hari atau berjam-jam, di suatu tempat di ladang. Dan Anda memiliki ECC untuk mencakup apa yang Anda bisa dari itu. Dan kemudian Anda mendistribusikan beban pemrosesan dengan failover untuk menutupi mesin atau perangkat lunak yang gagal menyelesaikan tugas.

Keinginan untuk penyimpanan solid state, dan perpindahan dari media pemintalan telah menciptakan masalah terkait hal ini. Penyimpanan yang digunakan untuk SSD (dan penyimpanan non-volatil lainnya) untuk menjadi lebih cepat dan lebih murah, jauh lebih tidak stabil daripada yang kita inginkan dan bergantung pada EDAC, karena kita akan kehilangan data tanpa itu. Mereka membuang banyak bit tambahan dan menyelaraskan semuanya, melakukan perhitungan untuk menyeimbangkan kecepatan, biaya, dan umur penyimpanan yang panjang. Saya tidak melihat kita berbalik; Orang-orang menginginkan lebih banyak penyimpanan yang tidak mudah menguap di mana-mana yang cocok dengan paket kecil dan tidak mendominasi harga produk.

Sejauh sirkuit normal pergi, dari hari-hari awal menggunakan transistor untuk sirkuit digital hingga saat ini, kami melewati bagian linear dari transistor dan menggunakannya sebagai saklar, kami menggedornya antara rel dengan beberapa kelebihan untuk memastikannya tetap. . Seperti saklar lampu di dinding Anda, Anda membalikkannya lebih dari setengah pegas membantu sisanya dan menahannya di sana. Inilah sebabnya kami menggunakan digital dan tidak mencoba hidup di wilayah linier; mereka mencoba sejak awal, tetapi gagal. Mereka tidak bisa tetap dikalibrasi.

Jadi kita hanya membanting transistor ke relnya dan kedua sisi sinyal akan menyelesaikan siklus clock berikutnya. Kesulitan besar diambil, dan alat saat ini secara signifikan lebih baik daripada sebelumnya, dalam melakukan analisis desain chip, untuk melihat bahwa dengan desain ada margin pada timing. Kemudian menguji setiap die pada setiap wafer (itu dan / atau setelah kemasan), untuk melihat bahwa setiap chip baik.

Teknologi chip sangat bergantung pada statistik berdasarkan eksperimen. Ketika Anda meng-overclock CPU Anda, nah Anda mendorong margin itu, tetap berada dalam laju clock yang diiklankan, suhu, dll. Dan kemungkinan Anda jauh lebih rendah dari masalah. Prosesor 3 GHz xyz hanyalah sebuah chip 4 GHz yang gagal pada 4 GHz tetapi melewati pada 3 GHz. Bagian-bagian pada dasarnya dinilai cepat dari jalur produksi.

Lalu ada koneksi antara chip atau papan, dan mereka juga mengalami masalah, dan banyak waktu dan usaha untuk membuat standar dan desain papan, dll, untuk mengurangi kesalahan pada antarmuka tersebut. USB , keyboard, mouse, HDMI , SATA , dan sebagainya. Serta semua jejak di papan tulis. Di dalam dan di luar papan Anda memiliki masalah crosstalk; lagi, banyak alat yang tersedia jika Anda menggunakannya serta pengalaman dalam menghindari masalah di tempat pertama, tetapi cara lain di mana kita mungkin tidak melihat satu dan nol terlibat penuh.

Tak satu pun dari teknologi, bahkan ruang, yang sempurna. Itu hanya harus cukup baik, cukup persentase dari produk harus cukup untuk memenuhi rentang hidup yang diharapkan dari produk. Beberapa persen dari ponsel pintar harus membuatnya setidaknya dua tahun, dan hanya itu. Pengecoran atau teknologi yang lebih tua memiliki lebih banyak data eksperimental dan dapat menghasilkan produk yang lebih andal, tetapi lebih lambat, dan mungkin bukan desain baru, jadi begitulah. Ujung tombak hanya itu, pertaruhan untuk semua orang.

Untuk pertanyaan spesifik Anda, transistor pada setiap ujung sinyal didorong dengan cepat melalui wilayah liniernya dan condong ke salah satu rel. Analisis dilakukan pada setiap jalur kombinasional untuk menentukan bahwa ia akan mengendap sebelum jam di ujung jalan mengaitkannya, sehingga benar-benar dibuat nol atau satu. Analisis ini didasarkan pada eksperimen. Chip pertama dari lini produk didorong melampaui batas desain, plot schmoo dibuat untuk menentukan ada margin dalam desain. Variasi pada proses dibuat dan / atau kandidat individu ditemukan yang mewakili chip lambat dan cepat. Ini adalah proses yang rumit dan beberapa memiliki lebih banyak bahan, beberapa memiliki lebih sedikit, berjalan lebih cepat tetapi menggunakan lebih banyak energi atau berjalan lebih lambat, dll.

Anda mendorong mereka ke margin juga. Dan pada dasarnya mendapatkan perasaan kabur hangat bahwa desainnya boleh masuk ke produksi. JTAG / pemindaian batas digunakan untuk menjalankan pola acak melalui chip antara masing-masing keadaan terkunci untuk melihat jalur kombinasional semuanya solid untuk desain. Dan di mana ada kekhawatiran, beberapa tes fungsional terarah dapat terjadi juga. Pengujian lebih lanjut dari silikon pertama dan mungkin pengujian acak untuk memastikan produk tersebut baik. Jika / ketika kegagalan terjadi, itu mungkin mendorong Anda kembali ke tes yang lebih fungsional di jalur produksi. Ini sangat tergantung pada statistik / persentase. 1/1000000 yang buruk keluar mungkin baik-baik saja atau 1/1000 atau apa pun; itu tergantung pada berapa banyak Anda pikir Anda akan menghasilkan chip itu.

Kerentanan seperti disebutkan di sini dan dengan orang lain. Pertama, chip itu sendiri, seberapa baik desain dan prosesnya, seberapa dekat dengan margin adalah jalur terlemah dari chip tertentu dalam produk yang Anda beli. Jika terlalu dekat dengan tepi maka perubahan suhu atau lainnya dapat menyebabkan masalah waktu dan bit akan mengunci data yang belum menetap menjadi satu atau nol. Lalu ada satu gangguan acara. Lalu ada kebisingan. lagi hal-hal yang telah disebutkan ...

old_timer
sumber
4
Paragraf pertama Anda membuatnya terdengar seperti tidak ada lagi masalah dengan lingkungan dirgantara, sementara saya pikir Anda maksudkan bahwa SEU tidak lagi hanya berpengalaman di lingkungan itu.
W5VO
Perhatikan bahwa SEU dapat disebabkan oleh solder SnPb pada BGA karena beberapa timbal menjadi bagian dari rantai peluruhan Uranium yang terpisah dari aktivitas neutron bebas.
Peter Smith
@ W5VO, ya, maksud saya kesal karena radiasi tidak lagi hanya masalah ruang, mereka adalah masalah sampai ke permukaan. Tidak seburuk di ruang, tapi ada.
old_timer
1
Saya ingat beberapa bus komputer mini DEC memiliki masalah dengan metastabilitas dalam praktiknya. Itu mekanisme yang berbeda untuk kesalahan bit dari yang Anda sebutkan, kan? Atau tidak?
davidbak
2
@davidbak: Metastabilitas adalah masalah buruk yang efek paling umum adalah bahwa dalam kasus di mana nilai beberapa bit bergantung pada apakah beberapa input rendah atau tinggi pada suatu waktu di masa lalu, mungkin tidak semua beralih bersama-sama secara konsisten dengan input rendah, atau dengan cara yang konsisten dengan itu tinggi, tetapi sebaliknya dapat menghasilkan campuran yang sewenang-wenang dari dua perilaku. Sebagai contoh, jika kode seharusnya bercabang ketika sebuah tombol ditekan, bit-bit penghitung program pada akhirnya dapat menahan campuran nilai-nilai yang semestinya mereka miliki jika tombol itu ditekan, atau jika tidak.
supercat
12

Jika Anda mencari jawaban sederhana:

Setiap komponen digital dalam komputer lebih terbatas dalam output yang dihasilkannya, daripada input yang diterimanya. Misalnya, nilai "input" dari 0V ke 2V akan diterima sebagai 0, tetapi "output" 0 akan selalu berada dalam kisaran 0 hingga 0,5V. (Lihat jawaban duskwuff untuk beberapa nilai aktual.)

Ini berarti bahwa setiap komponen membantu untuk "memperbaiki" beberapa penyimpangan atau kebisingan yang terjadi di sepanjang jalur. Tentu saja, jika kebisingannya cukup besar, sistem tidak dapat mengimbanginya. Komputer dalam lingkungan radiasi tinggi sering dapat dipengaruhi oleh perubahan 1s menjadi 0s dan sebaliknya.

Pada dasarnya, komputer dirancang untuk mentoleransi tingkat kebisingan / interferensi tertentu , yang cukup baik untuk tujuan praktis.

Artelius
sumber
8

Secara teori dimungkinkan untuk sinyal berubah antara 0 dan 1 karena noise termal (dan lainnya), namun sangat tidak mungkin.

Sirkuit digital dirancang dengan atribut yang disebut 'margin kebisingan'. Ini adalah jumlah input yang harus diubah sebelum status membalik. Umumnya di sirkuit CMOS ini sekitar 50% dari tegangan suplai. Kebisingan termal yang tidak terhindarkan (berasal dari elektron yang bergerak pada suhu di atas 0 kelvin) di sirkuit ini menghasilkan << 1 mV kebisingan, dan probabilitas bahwa lonjakan ini dapat melebihi (katakanlah) 500 mV, sangat kecil.

Gerbang digital (misalnya CMOS) memiliki karakteristik penguatan dan saturasi. Artinya adalah bahwa ketika sinyal input dekat dengan tengah kisaran, output berubah dengan cepat (gain tinggi), tetapi ketika dekat dengan ekstrem rentang, ia berubah perlahan. Hasil dari ini adalah bahwa ketika sinyal input 'dekat' dengan rel, output lebih dekat - ini berarti bahwa noise tidak mendapatkan penguatan.

Fitur lain yang disebutkan di atas (koreksi kesalahan dll.) Berarti bahwa kesalahan bahkan jika mereka terjadi, jangan menyebar.

jp314
sumber
4

Dalam sistem yang rentan terhadap kesalahan seperti saluran komunikasi dan penyimpanan magnetik (dan kadang-kadang bahkan RAM), sebuah checksum, CRC, atau ECC disimpan untuk menolak data yang buruk atau memperbaiki kesalahan kecil.

Umumnya sistem biner dirancang sedemikian rupa sehingga tidak mungkin, tetapi sekali dalam beberapa juta atau miliar * kali sinar kosmik atau blip kebisingan akan mendorong hal-hal di telepon, deteksi kesalahan / koreksi diperlukan untuk menjaga korupsi dari mempengaruhi komputer secara serius.

* Saluran komunikasi dapat memiliki tingkat kesalahan yang jauh lebih tinggi!

Daniel
sumber
4

Perangkat keras komputer telah menjadi lebih kuat dan dapat diandalkan. Tetapi perangkat keras terlalu luas untuk jawaban yang sederhana. Namun mungkin menarik untuk mengetahui ada perbedaan ketergantungan antara komputer desktop umum dan komputer server perusahaan. Saya menemukan ini pertanyaan / jawaban thread tentang hardware server. Server akan dikenakan biaya berkali-kali lipat dari bagian atas meja yang sebanding. Biaya adalah hasil dari perangkat keras yang lebih baik yang mungkin beberapa kali lebih kecil kemungkinannya untuk "beralih 1 dan 0" secara tak terduga.

Tetapi perangkat keras hanya setengah dari cerita. Komputer juga dapat melindungi data dari kesalahan tak terduga menggunakan perangkat lunak. Kode Hamming adalah contoh di mana, dengan menambahkan sejumlah kecil data tambahan, sejumlah kecil kesalahan tidak hanya dapat dideteksi tetapi juga diperbaiki.

st2000
sumber
dengan pengecualian flash MLC, di mana reliabilitas diperdagangkan untuk densitas,
Jasen
3

Ada dua cara yang biasanya digunakan untuk meminimalkan probabilitas bahwa bit logika akan secara tidak sengaja diaktifkan (0 ke 1, atau 1 ke 0).
Yang pertama adalah dengan memberikan celah sebesar mungkin , antara level tegangan yang ditentukan untuk 0 dan 1, sebanyak mungkin . Seperti yang Anda sebutkan, 0 didefinisikan sebagai level tegangan <.9v, sedangkan 1 didefinisikan sebagai level tegangan> 2.9v (bukan seperti yang Anda katakan .9 hingga 1.5). Ini menyisakan celah tegangan 2v. Ini berarti bahwa tegangan sinyal harus bervariasi hingga 200% , sebelum "tidak sengaja" mengubah keadaan bit (sangat tidak mungkin).
Yang kedua adalah dengan "clocking"sinyal logika. Karena tegangan / kebisingan "tidak disengaja" bersifat acak dan berumur pendek, dengan membiarkan perubahan keadaan hanya pada interval tertentu (dan pendek), kemungkinan "variasi" yang mengenai pada jam itu diminimalkan.

Tentu saja ada cara dan metode lain yang digunakan, tergantung pada tingkat keandalan yang diperlukan (ECD, ECC, dll.).

Guill
sumber
2

Rekayasa yang bagus.

Banyak upaya dimasukkan ke dalam desain untuk mencegah korupsi data , atau untuk memperbaikinya ketika itu tidak dapat dicegah secara memadai (misalnya memori ECC ).

Hal-hal yang dapat menyebabkan korupsi data meliputi:

  • lingkungan yang bising secara elektrik
  • masalah terkait kekuasaan
  • masalah waktu (mis. antara jam dan garis data, atau antara dua garis diferensial)
  • pembicaraan lintas listrik

Singkatnya, banyak rekayasa telah masuk ke desain digital sehingga insinyur perangkat lunak dapat membuat asumsi sederhana bahwa '0' berarti '0' dan '1' berarti '1'.

bel
sumber
Dan tentu saja, memori ECC juga dapat melakukan hal-hal lucu seperti memicu non-maskable interrupt (NMI) jika lebih banyak bit yang rusak daripada yang mungkin diperbaiki. Saya pikir untuk RAM ECC modern ini lebih dari satu kesalahan bit dalam 64 bit (pengkodean dapat memperbaiki kesalahan bit tunggal, dan mendeteksi tetapi tidak memperbaiki kesalahan dua bit), tetapi saya bisa salah tentang hal itu. Dalam situasi di mana Anda peduli dengan data Anda, menghentikan sistem segera jika ada sesuatu yang salah diperbaiki mungkin lebih baik daripada pincang tanpa mengetahui apakah data dapat dipercaya (atau lebih buruk lagi, mengetahui bahwa itu tidak dapat dipercaya).
CVn
2

Dua aspek mendasar dari komputer elektronik praktis adalah:

  1. Catu daya yang sangat stabil

  2. Waktu (biasanya didefinisikan sebagai frekuensi atau penundaan jam)

Catu daya untuk sistem komputasi ditentukan dan diatur dengan sangat ketat. Bahkan, untuk sistem komputasi apa pun catu daya biasanya diatur beberapa kali: pada catu daya (atau pengisi daya baterai), pada input utama ke motherboard, pada input ke kartu anak dan akhirnya pada chip itu sendiri.

Ini menghilangkan banyak kebisingan (volatilitas listrik). Apa yang dilihat CPU adalah sumber tegangan yang sangat stabil dan tidak mudah menguap yang dapat digunakan untuk memproses logika.

Sumber utama berikutnya dari nilai-nilai perantara (tegangan antara apa yang dianggap 0 atau 1) datang ketika nilai-nilai transisi. Baik 1 berubah menjadi 0 (waktu jatuh) atau 0 berubah menjadi 1 (waktu naik). Anda benar-benar tidak bisa berbuat banyak tentang hal itu kecuali menunggu transisi selesai sebelum menerima output dari rangkaian. Sebelum transisi selesai, keluaran sirkuit dianggap sebagai sampah.

Dalam rekayasa solusi untuk masalah ini adalah dengan menulis berapa lama Anda harus menunggu hasilnya benar di atas kertas. Ini adalah asal dari frekuensi jam CPU. Berapa GHz Anda dapat menjalankan CPU tergantung pada berapa lama waktu yang diperlukan untuk perubahan status pada CPU untuk stabil.

Sebenarnya ada sumber volatilitas ketiga: input ke sirkuit. Solusi untuk masalah itu mirip dengan masalah umum di atas: pastikan sinyal (tegangan atau arus) yang masuk ke sistem stabil dan pastikan sinyal punya cukup waktu untuk stabil.

Bagian kedua dari masalah adalah mengapa kami mencicipi input ke kait atau register sebelum diproses. Sinyal mungkin sampah. Tetapi mereka akan menjadi 0 atau 1 sampah di bagian dalam register ketika mereka diproses. Bagian pertama dari masalah adalah untuk apa jaminan.

Slebetman
sumber
2

Tapi saya tidak pernah membaca apa yang membuat voltase listrik "berperilaku baik" dengan cara yang 0 tidak pernah bisa secara tidak sengaja menjadi 1 karena volatilitas listrik 1 di dalam komputer. Mungkin tegangan sangat dekat 0,9, lalu apa yang dilakukan untuk menghindarinya melewati ambang batas?

Umpan balik adalah apa yang mencegahnya mendekati tegangan ambang, dan memaksanya berperilaku baik.

Ini biasanya dalam bentuk semacam rangkaian pengunci, seringkali berupa sirkuit pengunci yang di-clock.

Sebagai contoh sederhana, pertimbangkan flip-flop . Ini dirancang sehingga output diumpankan kembali ke sirkuit logika sebagai input tambahan. Logika di dalam elemen, oleh karena itu, tahu apa itu keluaran dan itu akan terus menghasilkan nilai yang sama sampai input lain memaksanya ke keadaan yang berlawanan.

Karena rangkaian dirancang sedemikian rupa sehingga transistor benar-benar hidup atau mati sepenuhnya, maka ia akan selalu keluar di dekat catu daya dan batas tanah - ia tidak akan mendekati level 0,9v, dan ketika melakukan transisi, ia akan dengan cepat dan sepenuhnya bergerak ke negara bagian lain. Sirkuit dirancang khusus untuk menghindari operasi di wilayah analog antara kedua negara.

Adam Davis
sumber
0

Di bawah kondisi operasi normal, 0 dan 1 jarang kesalahan, tetapi dalam kondisi operasi yang buruk (yaitu baterai rendah atau waktu yang singkat setelah daya AC terputus dan tegangan kapasitor jatuh), hal-hal aneh terjadi dan 0 dan 1 menjadi kacau sepanjang waktu.

Untuk alasan ini, jika Anda menulis kode defensif (perangkat lunak atau HDL) yang tidak ingin Anda kunci, Anda harus selalu mempertimbangkan kasus di mana angka mungkin salah . Sebagai contoh,

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

lebih baik untuk mengubah ==untuk >= berjaga-jaga jika nilai imelompat dari 9 ke 11 atau angka lebih besar dari 10, yang akan menyebabkan Anda tidak pernah keluar dari loop sampai imembungkus ke 0 (katakanlah setelah 4 miliar iterasi).

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

Itu terjadi, percayalah ...

Mark Lakata
sumber
bagaimana jika imelompat ke beberapa angka negatif besar?
Jasen