Apakah Jam Real-Time (RTC) diperlukan untuk sistem waktu-nyata? [Tutup]

11

Dengan asumsi bahwa kita sedang mengerjakan sistem dan perangkat keras Linux real-time yang terdiri dari pengatur waktu resolusi tinggi, apakah memiliki RTC memengaruhi ketepatan waktu sistem yang sebenarnya?

Di sini dikatakan bahwa ini mengurangi penggunaan CPU dan memori, tetapi adakah cara untuk membandingkan perbedaannya?

www
sumber
12
Perbandingan dalam tautan itu konyol.
pipa
9
Yap, @pipe, dan di atasnya, bahkan angkanya benar-benar salah. Saya dengan senang hati akan membeli chip RTC DS12C887 dengan harga "kesalahan 1 detik dalam 100 tahun". Bahkan, saya akan membeli sebanyak tabungan saya memungkinkan saya untuk membeli. Itu adalah akurasi 300ppb. Lebih dari 100 tahun. Itulah beberapa kebaikan frekuensi yang serius di sana.
Marcus Müller
8
Sistem waktu nyata dan jam waktu nyata adalah hal yang berbeda dan tidak ada perbandingan. RTC adalah untuk menjaga waktu dan Real Time System digunakan untuk melayani tujuan waktu nyata (bukan seperti dalam UTC, tetapi seperti dalam kecepatan)
MaNyYaCk
2
@pas DS12C887, versi paket 100 tahun .
Marcus Müller
3
@ JimmyB Jam seperti ini untuk menentukan waktu , bukan waktu ! Bahkan jika Anda memiliki zaman referensi, kami biasanya menetapkannya ke TAI (atau GPS) dan menerapkan koreksi UTC yang relevan ketika kami membutuhkan UTC. Dalam kasus GPS, parameter koreksi ini berasal dari ephemeris. UTC adalah semacam "zona waktu" dalam pengertian itu - sama halnya Anda tidak mengatur ulang jam ketika DST mulai berlaku dan menunggunya kembali stabil - tidak ada yang diatur ulang, karena jam memberi Anda pulsa, bukan stempel waktu.
Lightness Races in Orbit

Jawaban:

39

Artikel yang Anda tautkan hanya lengkap dan omong kosong. "Waktu nyata" dalam "jam waktu nyata" (seperti yang digunakan untuk merujuk pada jenis perangkat keras yang dijelaskan dalam artikel) dan "waktu nyata" dalam "sistem waktu nyata" adalah istilah yang sama sekali berbeda. Yang pertama berarti menyimpan waktu kalender saat ini (biasanya beberapa perkiraan yang sangat buruk, dibandingkan dengan presisi tinggi seperti yang diklaim artikel terkait) dan memajukannya tanpa daya eksternal, menggunakan baterai jenis koin / baterai yang tahan lama. Yang terakhir berarti menanggapi peristiwa dengan batasan keras pada latensi dari saat acara hingga saat respons.

Beberapa bit lain dari artikel tersebut, untuk membuktikan bahwa artikel itu harus dianggap tidak dapat dipercaya:

Hampir bisa diabaikan. Dari urutan 1 detik dalam 100 tahun

1 detik dalam 100 tahun kira-kira 317 ppt (ya, itu bagian per triliun ). Anda tidak bisa mendapatkan stabilitas jam semacam itu dengan teknologi jam apa pun yang tersedia secara komersial. Bahkan untuk mendapatkan 1 detik per tahun akan membutuhkan setidaknya OCXO yang membutuhkan oven berdaya tinggi yang selalu mengatur suhu. Gagasan Anda bisa mendapatkannya dengan perangkat yang ditenagai oleh baterai koin yang tahan lama sangat menggelikan.

sistem waktu nyata seperti jam digital, sistem kehadiran, kamera digital

Tidak satu pun dari ini yang disebut sistem waktu nyata.

R .. GitHub BERHENTI MEMBANTU ICE
sumber
1
Sebenarnya sistem-sistem itu kemungkinan besar memiliki komponen waktu nyata, walaupun "waktu nyata lunak" karena konsekuensi dari kehilangan / keterlaluan kutu pemrosesan adalah kecil. Namun, tidak dalam arti sesat yang oleh penulis tautan.
Graham
2
@ Bahr: Dalam beberapa hal mereka melakukannya, tetapi marginnya sangat besar sehingga Anda biasanya menganggapnya non-realtime. Pada akhirnya semua sistem interaktif bersifat realtime jika Anda memperluas definisi cukup jauh karena ketika itu tidak bereaksi selama beberapa menit atau jam, seseorang akan menganggapnya macet. :-) Jadi saya pikir itu hanya berguna untuk mengkategorikan sesuatu sebagai "waktu nyata" ketika ada margin kecil dan konsekuensi serius karena melewatkannya.
R .. GitHub BERHENTI MEMBANTU ICE
3
@R .. Tidak semua sistem real time, bahkan dengan margin besar. Jika suatu sistem mampu menggantung tanpa batas waktu, itu tidak bisa menjadi sistem waktu nyata. Sistem harus memiliki jaminan mutlak bahwa slot waktu hanya akan memakan waktu terbatas, dan hang (deadlock / livelock), menurut definisi, tidak terbatas.
hutan
2
Sebuah meta-diskusi tentang apa sebenarnya sistem waktu nyata itu tidak termasuk dalam bagian komentar.
pipa
1
@Uwe: Memang saya mengacaukannya, tapi sekarang saya melihatnya lagi, saya pikir saya kehilangan 2 faktor 10 - bukankah seharusnya 0,316ppb? Menggambarkan sebagai 1s / (100 * secs_per_year) di mana secs_per_year = 31556952.
R .. GitHub BERHENTI MEMBANTU ICE
39

Sistem Waktu Nyata adalah sesuatu yang merespons peristiwa / rangsangan internal atau eksternal dalam waktu tertentu dan waktu itu biasanya dalam mili atau detik mikro. Dibutuhkan pengatur waktu yang presisi kecil daripada RTC.

Dan jawaban untuk pertanyaan Anda adalah Tidak, itu tidak akan mempengaruhi ketepatan waktu sistem yang sebenarnya.

MaNyYaCk
sumber
1
Ini singkat dan to the point menjawab pertanyaan IMO.
Rev1.0
Beberapa entitas Federal seperti Bank menggunakan 1ns RTC di server mereka, berdasarkan jam atom. Bahkan sedikit gangguan pada tautan gelombang mikro mereka akan mengubah waktu transit ke penerima. Fast RTC juga bagus untuk multi-fase semaphores.
Sparky256
4
Beberapa sistem waktu nyata tidak memerlukan pengatur waktu karena mereka sepenuhnya didorong oleh peristiwa, dan tidak perlu ada kejadian berdasarkan waktu. Sistem hanya perlu menanggapi setiap peristiwa dalam periode waktu yang diberikan untuk peristiwa itu, termasuk ketika beberapa peristiwa terjadi sangat dekat satu sama lain. Dalam beberapa kasus, kernel preemptive mungkin diperlukan. Pengatur waktu eksternal dapat digunakan untuk memvalidasi sistem yang beroperasi dalam batasan waktunya.
rcgldr
2
Jika Anda ingin contoh dunia nyata, sistem operasi MicroWare OS-9 untuk prosesor Motorola 6809 / Hitachi 6309 adalah OS Waktu Nyata. Seri Tandy Color Computer menggunakan 6809s dan menjalankan OS-9 (paparan pertama saya ke OS * nix-like) dan jam waktu nyata tidak pernah menjadi perlengkapan standar pada sistem itu, dan tidak diperlukan agar OS-9 berfungsi.
zmerch
3

Jika sistem Anda sedang offline setelah reset dan memiliki RTC, itu akan dapat memasukkan tanggal yang tepat ke dalam log. Log bisa jadi besar jika Anda perlu melihatnya dan memiliki timestamp yang salah akan membuat Anda, pengembang perangkat lunak dan klien Anda gila, dan dalam penyelidikan umum hampir tidak mungkin.

Mudah atau sulit, rendah atau tinggi dalam artikel yang Anda rujuk adalah semacam pendapat pribadi. Sulit dan mahal jika Anda belum pernah melakukannya sebelumnya dan tidak memiliki persyaratan sistem dan pernyataan kerja yang jelas; dan itu mudah dan murah ketika Anda tahu apa yang Anda butuhkan dan apa perangkat terbaik untuk digunakan.

Anonim
sumber
Pertanyaannya adalah bagaimana mengukur pengurangan waktu CPU dan penggunaan memori RTC vs tanpa RTC dalam sistem waktu nyata. Jawaban Anda tidak menjawab itu.
pipa
1
@pipe Tergantung pada arsitektur dan persyaratan CPU. Sangat tidak mungkin untuk menjawab dengan informasi langka yang diberikan. Jawaban saya mengatakan mengapa RTC harus ada di sana daripada generik bla-bla tentang bagaimana bisa tanpa itu. Programmer dan arsitek sistem dapat merancang sistem dan kode yang baik dan sistem dan kode yang buruk dalam hal waktu yang dihabiskan untuk pengaturan waktu.
Anonim
3

Ini tampaknya menjadi masalah terminologi seputar penggunaan istilah "waktu nyata".

Jam waktu nyata

Jam waktu nyata adalah perangkat untuk ketepatan waktu yang stabil / akurat (dalam beberapa toleransi), sehingga sistem host dapat menggunakannya untuk mengaitkan peristiwa / tindakan dengan waktu dan tanggal terjadinya.

Anda dapat menganggap jam real-time sebagai analog dengan jeroan jam tangan digital yang terhubung ke komputer. Ini memiliki referensi waktu yang diberdayakan secara independen yang dirancang agar stabil dan cukup akurat. Seperti jam tangan digital, itu tidak akan kehilangan jejak waktu saat ini hanya karena komputer host dimatikan. Jam waktu nyata telah dipasangkan ke komputer sebagian besar sebagai kenyamanan sehingga pengguna tidak harus memasukkan kembali waktu dan tanggal saat ini setiap kali sistem dimulai, atau membuat penyesuaian sering untuk mengimbangi penyimpangan.

Alternatif untuk jam waktu nyata adalah menggunakan perangkat lunak dan timer internal yang didorong oleh jam sistem. Pendekatan semacam itu bisa diterapkan (IBM PC asli bekerja seperti itu), tetapi tidak terlalu stabil; itu juga akan kehilangan jejak tanggal / waktu di setiap titik sistem operasi dimatikan, hang, atau crash.

Sistem waktu nyata

Ketika istilah "waktu nyata" diterapkan pada sistem atau aplikasi komputer, ia menggambarkan sistem yang merespons peristiwa dunia nyata dalam waktu yang sangat singkat dan deterministik - seringkali hanya beberapa milidetik, terkadang kurang, dengan pemesanan yang ditentukan input simultan. Sistem waktu nyata digunakan untuk hal-hal seperti kontrol mesin - robotika, simulasi, dan permainan. Meskipun aplikasi waktu nyata dapat menggunakan informasi waktu dan tanggal saat ini, aplikasi bukan "waktu nyata" hanya karena memanfaatkan waktu dan tanggal saat ini.

Jam waktu nyata vs penghitung waktu beresolusi tinggi

Seperti yang dinyatakan di atas, tujuan dari jam waktu-nyata adalah untuk secara andal melacak tanggal dan waktu saat ini, umumnya hanya untuk yang kedua; yang bagus akan memiliki penyimpangan minimal (detik naik atau turun setiap hari). Jam real-time umumnya tidak memiliki resolusi tinggi; jam dasar mereka sering berjalan sangat lambat dibandingkan dengan jam CPU modern; ini untuk meminimalkan konsumsi daya (menghabiskan sumber daya independennya) sehingga jam akan terus menjaga waktu jika komputer host dimatikan untuk waktu yang lama.

Timer resolusi tinggi tidak peduli dengan waktu atau tanggal saat ini; tujuannya adalah untuk mengukur interval waktu dengan presisi, mungkin dalam hitungan detik, atau bahkan kurang. Untuk mencapai hal ini, itu harus didasarkan pada jam frekuensi tinggi yang stabil - biasanya jam sistem komputer. Pengatur waktu resolusi tinggi juga biasanya tidak peduli dengan penyimpangan selama jangka waktu lama, karena tujuan biasanya adalah pengukuran waktu terhadap jangka waktu pendek. Penghitung waktu resolusi tinggi tidak memiliki masalah konsumsi daya yang sama dengan jam waktu nyata karena mereka tidak memiliki pekerjaan yang harus dilakukan ketika komputer host dimatikan.

Anthony X
sumber
Sebagai sedikit niggle, "[...] mungkin terpendek" tidak dianggap real time. Waktu nyata adalah respons dalam waktu deterministik , atau dengan urutan yang ditentukan jika beberapa peristiwa terjadi secara bersamaan.
awjlogan
2

Dalam kebanyakan sistem, satu-satunya keuntungan nyata dari periferal RTC dibandingkan bentuk-bentuk lain dari menjaga waktu adalah bahwa pengukuran waktu RTC tidak akan terpengaruh ketika sisa dari sistem tersebut tertidur atau - dalam beberapa kasus - dimatikan sepenuhnya. Banyak periferal RTC sebenarnya dirancang dengan cara yang akan membuatnya tidak praktis untuk sebagian besar tujuan selain merekam perkiraan waktu dalam sehari. Banyak periferal RTC (mungkin mayoritas tetapi mungkin bukan supermajority), misalnya, terbatas pada waktu pelaporan dalam peningkatan satu detik, dan banyak dari mereka setidaknya akan kadang-kadang membutuhkan kesibukan menunggu sinkronisasi ketika mengatur alarm atau - di beberapa kasus - bahkan hanya mencoba membaca waktu. Sebagai akibatnya, cara normal untuk menggunakan RTC adalah dengan hanya menyalin nilainya ke jam yang lebih berguna saat startup, atur setiap kali "waktu dinding" diatur,

dan empat bacaan berurutan akan dijamin mengandung dua yang cocok (dan karenanya benar) kecuali lebih dari 1/32768 detik berlalu antara yang pertama dan terakhir. Mengatur alarm dapat menghasilkan acara bangun palsu, tetapi urutannya:

  • nonaktifkan interupsi dari kait pengaktifan
  • atur waktu bangun untuk kutu 0x7FFFFFFF (sekitar 9 jam) di depan saat ini
  • mereset sirkuit bangun
  • baca jamnya
  • jika waktu yang baru dibaca menunjukkan waktu bangun telah tercapai, bertindaklah dengan tepat
  • aktifkan interupsi dari kait bangun

harus menangani semua kasing dengan cukup mudah sehingga cocok untuk penggunaan jangka waktu yang umum. Sayangnya, untuk alasan apa pun, periferal RTC tidak pernah dirancang seperti itu, tetapi malah lebih rumit dan kurang bermanfaat.

supercat
sumber
"Nyata" RTC juga menyediakan fungsionalitas kalender (hari-bulan, hari-minggu, tahun kabisat, ...), yang mungkin sulit untuk diterapkan pada perangkat lunak.
JimmyB
@ Jimim BCD YMDhms ke waktu linier setiap kali membaca RTC dan mengkonversi kembali ke fromat yang tidak berguna saat menulis.
supercat
@ JimmyB: Sebagai contoh sederhana, jika ada yang menyalakan sistem pada apa yang tampaknya 2016-03-01 00:30, dan terakhir dinyalakan pada 2015-10-01 pada 00:30:00, apa waktu apakah itu? Perangkat lunak perlu mengetahui bahwa Februari memiliki 29 hari pada 2016 untuk menentukan bahwa waktunya adalah 2015-02-29 23:30:00, jadi apa sebenarnya yang dibeli perangkat keras kalender?
supercat
Chip RTC yang dirujuk dalam OP menangani tahun kabisat dengan benar.
JimmyB
"Perangkat lunak yang perlu melakukan apa pun yang non-sepele dengan tanggal dan waktu" Tentu. Tapi RTC hanyalah sebuah jam . Ini memberi tahu Anda jam berapa saat Anda memintanya, itu tidak menghitung usia Anda dalam hitungan detik untuk Anda. Jadi jika Anda ingin timestamp entri log Anda RTC adalah semua yang Anda perlu dan Anda tidak akan harus berurusan dengan setiap jenis tanggal / waktu matematika. Jika Anda ingin melakukan perhitungan acak pada waktu itu tidak banyak berguna bagi Anda.
JimmyB
0

Saya pikir alasan utama untuk jam waktu nyata adalah waktu yang akurat hingga beberapa interval. Jam reguler biasanya dipangkas dengan kapasitor dan dapat memiliki perbedaan frekuensi yang lebih besar berdasarkan berbagai faktor yang mungkin di luar kendali seperti kapasitansi / resistansi yang salah dari sirkuit pengaturan waktu, ketidakpastian dalam waktu jam yang digunakan yang melayani tujuan duel untuk kinerja, serta sering kali ada logika yang dapat diprogram untuk membagi waktu yang lagi-lagi dapat menyebabkan kesalahan.

Biasanya RTC dapat memiliki timer dan menonton anjing dll. Digabungkan untuk itu, memberikan asumsi yang dijamin atau baik bahwa pada interval tepat yang teratur yang bahkan dapat tetap dalam fase dengan berbagai hal - prosedur atau kode yang diberikan akan dieksekusi. Anda tidak dapat dengan mudah mendapatkan ini dengan jam biasa. Atau Anda harus sangat berhati-hati dalam produksi agar jamnya akurat. Anda dapat melihat hal-hal seperti audio dan apa yang tidak perlu menggunakan rtc alih-alih jam sistem kecepatan tinggi.

Adapun apa artinya RTC saya tidak bisa mengatakan dengan pasti sendiri. Saya tahu Linux adalah alat yang lazim di dunia tertanam namun saya tidak yakin seberapa baik kerjanya untuk semua aplikasi waktu nyata. Multithreading dapat membuat waktu eksekusi menjadi non deterministik, namun ketika perangkat keras jauh melebihi persyaratan kinerja, banyak solusi akan berfungsi dengan baik bahkan dalam aplikasi waktu nyata.

Lalu ada aplikasi misi kritis dan kinerja rendah. Satu hal yang diinginkan di sini adalah solusi deterministik dan seringkali kompleksitas yang lebih rendah. Di sini RTC dapat digunakan dengan jelas. Linux dapat memberikan akses khusus ke interupsi yang digabungkan dengannya. Menurut saya untuk deterministic real time Anda tidak hanya membutuhkan rtc tetapi juga menginterupsi atau mengaksesnya.

kerajinan marshal
sumber
Bagaimana tepatnya menggabungkan RTC ke pengawas dapat menjamin bahwa jam tetap "sejalan dengan berbagai hal"?
Dmitry Grigoryev
Oke jika Anda menggunakan sumber jam eksternal Anda bergantung pada sumber itu, serta sirkuit yang menghubungkannya seperti kapasitansi dan hambatan atau impedansi. Jadi ini dijelaskan oleh osilasi harmonik yang solusinya adalah gelombang dan kemudian melihat sudut fase dll, serta aplikasi mikroprosesor untuk menjawab semua yang baru saja Anda tanyakan. Sayangnya semua hal ini harus diperhitungkan dalam banyak aplikasi.
kerajinan Marshal
0

Anda akan memerlukan jam waktu nyata jika Anda mengandalkan komunikasi yang aman dengan komputer lain di internet (tidak harus 100% dimiliki, tetapi jika Anda tidak memiliki referensi waktu setempat, Anda perlu mempercayai hal lain, dan Anda bisa ' t percayakan sertifikat kecuali Anda tahu tanggalnya).

Jadi, tidak, Anda tidak perlu satu untuk semua sistem 'real-time'. Namun, tergantung pada aplikasi Anda, Anda mungkin masih menginginkan RTC sebagai cara paling hemat energi untuk memperoleh perbaikan waktu yang baik setelah berada dalam kondisi daya rendah.

Sean Houlihane
sumber
Itu tidak sepenuhnya benar. Anda dapat, misalnya, mempercayai sertifikat (terutama yang disematkan) meskipun sudah kedaluwarsa atau secara teoritis dikeluarkan untuk masa depan yang tampaknya. Namun itu umumnya ide yang lebih baik untuk mendapatkan perbaikan NTP Anda sebelum mencoba menjadi klien SSL; Skema keamanan untuk NTP secara alami harus dirancang untuk bekerja tanpa harus memulai dengan ide yang masuk akal saat itu.
Chris Stratton
3
Terlalu dibesar-besarkan dan sementara berlebihan adalah hal yang mengharukan dan indah, jika itu membentuk pesan utama, maka itu salah. Bukan mode operasi cipher secara fundamental membutuhkan waktu atau tanggal.
Paul Uszak