Đồng hồ thời gian thực (RTC) có cần thiết cho các hệ thống thời gian thực không? [đóng cửa]


11

Giả sử rằng chúng tôi đang làm việc trên một hệ thống và phần cứng Linux thời gian thực bao gồm các bộ định thời có độ phân giải cao, liệu RTC có ảnh hưởng đến tính kịp thời của hệ thống không?

Ở đây nó nói rằng nó làm giảm việc sử dụng CPU và bộ nhớ, nhưng có cách nào để so sánh sự khác biệt bằng cách nào đó?


12
Sự so sánh trong liên kết chỉ là ngớ ngẩn.
ống

9
Đúng, @pipe và trên đó, thậm chí các con số hoàn toàn sai. Tôi sẵn sàng mua chip RTC có giá DS12C887 với "1 giây lỗi trong 100 năm". Trên thực tế, tôi sẽ mua bao nhiêu tiền tiết kiệm cho phép tôi mua. Đó là độ chính xác 300ppb. Hơn 100 năm. Đó là một số tốt lành tần số nghiêm trọng ngay tại đó.
Marcus Müller

8
Hệ thống thời gian thực và đồng hồ thời gian thực là những thứ khác nhau và không có so sánh. RTC là để giữ thời gian và Hệ thống thời gian thực được sử dụng để phục vụ các mục đích thời gian thực (không phải trong UTC, nhưng là nhanh chóng)
MaNyYaCk


3
@JimmyB Đồng hồ như thế này là dành cho thời gian , không phải thời gian ! Ngay cả khi bạn có kỷ nguyên tham chiếu, chúng tôi thường đặt nó thành TAI (hoặc GPS) và áp dụng hiệu chỉnh UTC có liên quan khi chúng tôi cần UTC. Trong trường hợp GPS, tham số hiệu chỉnh này xuất phát từ phù du. UTC là một loại "múi giờ" theo nghĩa đó - tương tự như bạn không đặt lại đồng hồ khi DST có hiệu lực và chờ cho nó ổn định lại - không có gì để đặt lại, vì đồng hồ cho bạn nhịp đập, không phải là dấu thời gian.
Cuộc đua nhẹ nhàng với Monica

Câu trả lời:


39

Bài viết bạn liên kết chỉ là đầy đủ và hoàn toàn vô nghĩa. "Thời gian thực" trong "đồng hồ thời gian thực" (như được sử dụng để chỉ loại thiết bị cứng được mô tả trong bài viết) và "thời gian thực" trong "hệ thống thời gian thực" là hai thuật ngữ hoàn toàn khác nhau. Trước đây có nghĩa là lưu trữ thời gian theo lịch hiện tại (thường là một số xấp xỉ rất kém của nó, trái ngược với độ chính xác cao như bài viết được liên kết đã tuyên bố) và nâng cao nó mà không cần nguồn điện bên ngoài, sử dụng pin loại nút / đồng xu có tuổi thọ cao. Điều thứ hai có nghĩa là phản ứng với các sự kiện có giới hạn cứng về độ trễ từ thời điểm xảy ra sự kiện đến thời điểm phản hồi.

Một vài bit khác từ bài viết, để xác định rằng nó nên được coi là không đáng tin cậy:

Hầu như không đáng kể. Trong số 1 giây trong 100 năm

1 giây trong 100 năm là khoảng 317 ppt (vâng, đó là phần nghìn tỷ ). Bạn không thể có được sự ổn định của đồng hồ với bất kỳ công nghệ đồng hồ thương mại hiện có nào. Ngay cả việc đạt được 1 giây mỗi năm cũng cần ít nhất một OCXO, đòi hỏi một lò luôn hoạt động với công suất cao, luôn điều chỉnh nhiệt độ. Ý tưởng bạn có thể có được với một thiết bị chạy bằng pin đồng xu có tuổi thọ cao là điều đáng cười.

hệ thống thời gian thực như đồng hồ kỹ thuật số, hệ thống chấm công, máy ảnh kỹ thuật số

Không ai trong số này là những gì người ta sẽ gọi hệ thống thời gian thực.


1
Trên thực tế, các hệ thống đó rất có thể có các thành phần thời gian thực, mặc dù "thời gian thực mềm" bởi vì hậu quả của việc thiếu / vượt quá một đánh dấu xử lý là nhỏ. Tuy nhiên, không phải trong ý nghĩa sai lầm mà tác giả của liên kết nghĩ.
Graham

2
@Graham: Trong một số ý nghĩa họ làm, nhưng lợi nhuận rất lớn, bạn thường nghĩ về họ như là không phải thời gian thực. Cuối cùng, bất kỳ hệ thống tương tác nào cũng là thời gian thực nếu bạn mở rộng định nghĩa đủ xa vì khi nó không phản ứng trong vài phút hoặc vài giờ, ai đó sẽ cho rằng nó bị sập. :-) Vì vậy, tôi nghĩ rằng chỉ hữu ích khi phân loại một cái gì đó là "thời gian thực" khi có lợi nhuận nhỏ và hậu quả nghiêm trọng cho việc bỏ lỡ chúng.
R .. GitHub DỪNG GIÚP ICE

3
@R .. Không phải tất cả các hệ thống là thời gian thực, ngay cả với lợi nhuận rất lớn. Nếu một hệ thống có khả năng treo vô thời hạn, nó không thể là một hệ thống thời gian thực. Các hệ thống phải có sự đảm bảo tuyệt đối rằng một khoảng thời gian sẽ chỉ mất một khoảng thời gian hữu hạn và theo định nghĩa, hang (deadlock / livelock), theo định nghĩa, là vô hạn.
rừng

2
Một cuộc thảo luận tổng hợp về chính xác những gì một hệ thống thời gian thực không thuộc về phần bình luận.
đường ống

1
@Uwe: Quả thực tôi đã làm hỏng nó, nhưng bây giờ khi tôi nhìn lại tôi nghĩ tôi bỏ qua 2 yếu tố 10 - không phải là 0,316ppb sao? Hình là 1s / (100 * secs_per_year) trong đó secs_per_year = 31556952.
R .. GitHub DỪNG GIÚP ICE

39

Hệ thống thời gian thực là một cái gì đó phản ứng với một sự kiện / kích thích bên trong hoặc bên ngoài trong một thời gian xác định và thời gian đó thường tính bằng mili hoặc micro giây. Nó cần bộ đếm thời gian với độ chính xác nhỏ hơn là RTC.

Và câu trả lời cho câu hỏi của bạn là Không, nó sẽ không ảnh hưởng đến tính kịp thời thực sự của hệ thống.


1
Đây là ngắn và câu trả lời cho câu hỏi IMO.
Rev1.0

Một số thực thể Liên bang như Ngân hàng sử dụng 1ns RTC trong máy chủ của họ, dựa trên đồng hồ nguyên tử. Ngay cả một gợi ý giả mạo với các liên kết vi sóng của họ sẽ thay đổi thời gian vận chuyển đến người nhận. RTC nhanh cũng tốt cho semaphores nhiều pha.
Sparky256

4
Một số hệ thống thời gian thực không cần bộ hẹn giờ vì chúng hoàn toàn hướng sự kiện và không cần bất kỳ sự kiện nào dựa trên thời gian. Hệ thống chỉ cần phản hồi với từng sự kiện trong khoảng thời gian được phân bổ cho sự kiện đó, kể cả khi nhiều sự kiện xảy ra rất gần nhau. Trong một số trường hợp, một hạt nhân phòng ngừa có thể cần thiết. Bộ hẹn giờ bên ngoài có thể được sử dụng để xác nhận hệ thống đang hoạt động trong giới hạn thời gian của nó.
RCgldr

2
Nếu bạn thích một ví dụ trong thế giới thực, hệ điều hành OS-9 của MicroWare dành cho bộ xử lý Motorola 6809 / Hitachi 6309 là HĐH thời gian thực. Sê-ri Máy tính Màu Tandy sử dụng 6809 và chạy OS-9 (lần đầu tiên tôi tiếp xúc với HĐH giống như * nix) và đồng hồ thời gian thực không bao giờ là thiết bị tiêu chuẩn trên hệ thống đó và không bắt buộc OS-9 phải hoạt động.
zmerch

3

Nếu hệ thống của bạn ngoại tuyến sau khi đặt lại và có RTC, nó sẽ có thể đưa ngày thích hợp vào nhật ký. Nhật ký có thể rất lớn trong trường hợp bạn cần xem qua chúng và có dấu thời gian sai sẽ khiến bạn, nhà phát triển phần mềm và khách hàng của bạn phát điên, và trong điều tra chung gần như không thể.

Dễ hay khó, thấp hay cao trong bài viết mà bạn đề cập là một loại ý kiến ​​cá nhân. Thật khó khăn và tốn kém nếu bạn chưa bao giờ làm điều đó trước đây và không có yêu cầu hệ thống rõ ràng và tuyên bố công việc; và thật dễ dàng và rẻ tiền khi bạn biết bạn cần gì và thiết bị nào tốt nhất để sử dụng.


Câu hỏi đặt ra là làm thế nào để định lượng thời gian sử dụng CPU và bộ nhớ của RTC giảm so với không có RTC trong hệ thống thời gian thực. Câu trả lời của bạn không trả lời điều đó.
đường ống

1
@pipe Nó phụ thuộc vào kiến ​​trúc và yêu cầu của CPU. Nó chỉ đơn giản là không thể trả lời với thông tin khan hiếm được đưa ra. Câu trả lời của tôi nói rằng tại sao RTC phải ở trong đó thay vì bla-bla chung chung về cách nó có thể được sử dụng. Lập trình viên và kiến ​​trúc sư hệ thống có thể thiết kế một hệ thống và mã tốt và hệ thống và mã xấu về thời gian dành cho thời gian.
Ẩn danh

3

Đây dường như là một vấn đề về thuật ngữ xung quanh việc sử dụng thuật ngữ "thời gian thực".

Đồng hồ thời gian thực

Đồng hồ thời gian thực là một thiết bị để chấm công ổn định / chính xác (trong một số dung sai), để hệ thống máy chủ có thể sử dụng nó để liên kết các sự kiện / hành động với thời gian và ngày xảy ra.

Bạn có thể nghĩ về một chiếc đồng hồ thời gian thực tương tự như bộ phận bên trong của một chiếc đồng hồ kỹ thuật số giao tiếp với máy tính. Nó có một tham chiếu thời gian được cung cấp độc lập được thiết kế để ổn định và chính xác hợp lý. Giống như một chiếc đồng hồ kỹ thuật số, nó sẽ không mất dấu vết của thời điểm hiện tại chỉ vì máy tính chủ bị tắt. Đồng hồ thời gian thực đã được trang bị cho máy tính để thuận tiện cho người dùng không phải nhập lại thời gian và ngày hiện tại mỗi khi hệ thống khởi động hoặc điều chỉnh thường xuyên để bù cho sự trôi dạt.

Thay thế cho đồng hồ thời gian thực là sử dụng phần mềm và bộ hẹn giờ bên trong được điều khiển bởi đồng hồ hệ thống. Cách tiếp cận như vậy là khả thi (PC IBM gốc hoạt động theo cách đó), nhưng không đặc biệt ổn định; nó cũng sẽ mất dấu ngày / giờ tại bất kỳ thời điểm nào hệ điều hành bị tắt, treo hoặc gặp sự cố.

Hệ thống thời gian thực

Khi thuật ngữ "thời gian thực" được áp dụng cho hệ thống máy tính hoặc ứng dụng, nó mô tả một hệ thống phản ứng với các sự kiện trong thế giới thực trong một khoảng thời gian rất ngắn, xác định - thường chỉ vài mili giây, đôi khi ít hơn, với thứ tự được xác định đầu vào đồng thời. Các hệ thống thời gian thực được sử dụng cho những việc như điều khiển máy - robot, mô phỏng và trò chơi. Mặc dù ứng dụng thời gian thực có thể sử dụng thông tin ngày giờ hiện tại, nhưng ứng dụng không phải là "thời gian thực" chỉ vì nó sử dụng thời gian và ngày hiện tại.

Đồng hồ thời gian thực so với bộ hẹn giờ độ phân giải cao

Như đã nêu ở trên, mục đích của đồng hồ thời gian thực là theo dõi đáng tin cậy ngày và giờ hiện tại, thường chỉ đến giây; một cái tốt sẽ có độ trôi tối thiểu (giây có được hoặc mất mỗi ngày). Đồng hồ thời gian thực thường không có độ phân giải cao; đồng hồ cơ sở của họ thường chạy khá chậm so với đồng hồ CPU hiện đại; điều này là để giảm thiểu mức tiêu thụ năng lượng (tiêu hao nguồn điện độc lập) để đồng hồ sẽ tiếp tục giữ thời gian một cách đáng tin cậy nếu máy tính chủ bị tắt trong thời gian dài.

Đồng hồ bấm giờ độ phân giải cao không liên quan đến thời gian hoặc ngày hiện tại; Mục đích của nó là để đo các khoảng thời gian ở một số độ chính xác, có thể là micro giây hoặc thậm chí ít hơn. Để thực hiện điều này, nó phải dựa trên đồng hồ tần số cao, ổn định - điển hình là đồng hồ hệ thống máy tính. Bộ định thời độ phân giải cao cũng thường không liên quan đến độ trôi trong thời gian dài, vì mục đích thông thường là đo thời gian trong khoảng thời gian ngắn. Bộ hẹn giờ độ phân giải cao không có cùng mối quan tâm tiêu thụ năng lượng như đồng hồ thời gian thực vì chúng không có việc phải làm trong khi máy tính chủ bị tắt.


Như một câu nói nhỏ, "ngắn nhất [...] có thể" không được coi là thời gian thực. Thời gian thực là phản ứng trong thời gian xác định hoặc theo thứ tự được xác định nếu nhiều sự kiện xảy ra đồng thời.
awjlogan

2

Trong hầu hết các hệ thống, lợi thế thực sự duy nhất của thiết bị ngoại vi RTC so với các hình thức giữ thời gian khác là các phép đo thời gian của RTC sẽ không bị ảnh hưởng khi phần còn lại của hệ thống chuyển sang chế độ ngủ hoặc - trong một số trường hợp - bị tắt hoàn toàn. Nhiều thiết bị ngoại vi RTC trên thực tế được thiết kế theo những cách có thể khiến chúng không thực tế cho hầu hết các mục đích khác ngoài việc ghi lại thời gian gần đúng trong ngày. Ví dụ, nhiều thiết bị ngoại vi RTC (có thể là đa số nhưng có thể không phải là đại đa số), chẳng hạn, bị giới hạn thời gian báo cáo theo gia số một giây và đôi khi nhiều người trong số họ đôi khi sẽ phải bận rộn chờ đồng bộ hóa khi đặt báo thức hoặc - trong một số trường hợp - thậm chí chỉ đơn giản là cố gắng đọc thời gian. Kết quả là, cách thông thường để sử dụng RTC là chỉ cần sao chép giá trị của nó sang đồng hồ hữu ích hơn khi khởi động, đặt nó bất cứ khi nào "thời gian treo tường" được đặt,

và bất kỳ bốn lần đọc liên tiếp nào cũng sẽ được đảm bảo có hai kết quả khớp (và do đó chính xác) trừ khi hơn 1/32768 giây trôi qua giữa lần đầu tiên và lần cuối. Đặt báo thức có thể tạo ra các sự kiện đánh thức giả, nhưng trình tự:

  • vô hiệu hóa ngắt từ chốt đánh thức
  • đặt thời gian đánh thức lên tới 0x7FFFFFFF tick (khoảng 9 giờ) trước hiện tại
  • đặt lại mạch thức dậy
  • đọc đồng hồ
  • nếu thời gian mới đọc cho biết đã đạt đến thời gian đánh thức, hãy hành động thích hợp
  • cho phép ngắt từ chốt đánh thức

nên xử lý tất cả các trường hợp cạnh đủ dễ dàng để phù hợp cho việc sử dụng thời gian cho mục đích chung. Thật không may, vì lý do nào, các thiết bị ngoại vi RTC không bao giờ được thiết kế theo cách đó, mà thay vào đó phức tạp hơn và ít hữu ích hơn.


Các RTC "thực" cũng cung cấp chức năng lịch (ngày tháng, ngày trong tuần, năm nhuận, ...), có thể rất khó để tự thực hiện trong phần mềm.
JimmyB

@JimmyB: Phần mềm cần làm bất cứ điều gì không tầm thường với ngày và giờ thường sẽ bao gồm logic như vậy và có thể giữ mọi thứ ở định dạng tuyến tính trừ khi thực hiện I / O của người dùng sẽ sạch hơn nhiều so với việc phải chuyển đổi từ vô dụng BCD YMDhms thành thời gian tuyến tính mỗi khi nó đọc RTC và chuyển đổi trở lại từ nguồn vô dụng khi viết.
supercat

@JimmyB: Một ví dụ đơn giản, nếu ai đó tăng sức mạnh cho hệ thống vào thời điểm dường như là 2016 / 03-01 00:30, và nó được cung cấp lần cuối vào lúc 2015-10-01 lúc 00:30:00, thì sao thời gian sẽ là gì? Phần mềm sẽ cần biết rằng tháng 2 đã có 29 ngày vào năm 2016 để xác định rằng thời gian là 2015 / 02-29 23:30:00, vậy chính xác thì phần cứng lịch mua gì?
supercat

Chip RTC được tham chiếu trong OP xử lý chính xác các năm nhuận.
JimmyB

"Phần mềm cần làm bất cứ điều gì không tầm thường với ngày và giờ" Chắc chắn. Nhưng một RTC chỉ là một chiếc đồng hồ . Nó cho bạn biết mấy giờ khi bạn yêu cầu, nó không tính tuổi của bạn trong vài giây cho bạn. Vì vậy, nếu bạn muốn đánh dấu thời gian các mục nhật ký của mình, RTC là tất cả những gì bạn cần và bạn sẽ không phải đối phó với bất kỳ loại toán ngày / giờ nào. Nếu bạn muốn thực hiện các phép tính tùy ý vào các thời điểm, nó không được sử dụng nhiều cho bạn.
JimmyB

0

Tôi nghĩ lý do chính cho đồng hồ thời gian thực là thời gian chính xác ở một khoảng thời gian. Đồng hồ thông thường thường được cắt bằng các tụ điện và có thể có sự chênh lệch lớn hơn về tần số dựa trên nhiều yếu tố có thể nằm ngoài tầm kiểm soát như điện dung / điện trở bị điều chỉnh của mạch thời gian đồng hồ, không chắc chắn về thời gian của đồng hồ được sử dụng phục vụ mục đích đấu tay đôi cho hiệu suất, cũng như thường có logic lập trình để phân chia thời gian một lần nữa có thể gây ra lỗi.

Thông thường, RTC có thể có bộ hẹn giờ và theo dõi chó, v.v ... Kết hợp với nó, đưa ra giả định được bảo đảm hoặc tốt rằng tại các khoảng thời gian chính xác thường xuyên thậm chí có thể vẫn cùng pha với nhiều quy trình hoặc mã được đưa ra sẽ được thực thi. Bạn không thể dễ dàng có được điều này với một chiếc đồng hồ thông thường. Hoặc bạn cần phải rất cẩn thận trong sản xuất rằng đồng hồ là chính xác. Bạn có thể thấy những thứ như âm thanh và những thứ không cần sử dụng rtc thay vì đồng hồ hệ thống tốc độ cao.

Đối với những gì RTC có nghĩa là tôi không thể nói chắc chắn bản thân mình. Tôi biết Linux là một công cụ phổ biến trong thế giới nhúng, tuy nhiên tôi không chắc nó hoạt động tốt như thế nào đối với tất cả các ứng dụng thời gian thực. Đa luồng có thể làm cho thời gian thực hiện không mang tính quyết định, tuy nhiên khi phần cứng vượt quá yêu cầu về hiệu năng, nhiều giải pháp sẽ hoạt động tốt ngay cả trong các ứng dụng thời gian thực.

Sau đó, có các nhiệm vụ quan trọng và hiệu suất thấp. Một điều mong muốn ở đây là giải pháp xác định và thường phức tạp thấp hơn. Ở đây RTC có thể được sử dụng rõ ràng. Linux có thể cung cấp quyền truy cập đặc biệt vào các ngắt được kết hợp với nó. Dường như đối với tôi trong thời gian thực xác định, bạn không chỉ yêu cầu rtc mà còn làm gián đoạn hoặc truy cập os vào chúng.


Làm thế nào chính xác việc ghép một RTC với một cơ quan giám sát có thể đảm bảo rằng đồng hồ vẫn "cùng pha với nhiều thứ khác nhau"?
Dmitry Grigoryev

Được rồi nếu bạn sử dụng nguồn đồng hồ bên ngoài, bạn phụ thuộc vào nguồn đó, cũng như các mạch kết nối với nó như điện dung và điện trở hoặc trở kháng. Vì vậy, điều này được mô tả bằng dao động điều hòa có giải pháp là sóng và sau đó xem góc pha, v.v., cũng như ứng dụng bộ vi xử lý để trả lời mọi thứ bạn vừa hỏi. Tất cả những thứ này không may phải được tính trong nhiều ứng dụng.
soái ca thủ công

0

Bạn sẽ cần một đồng hồ thời gian thực nếu bạn đang dựa vào giao tiếp an toàn với các máy tính khác trên internet (không phải 100%, nhưng nếu bạn không có tài liệu tham khảo theo giờ địa phương, bạn cần tin tưởng vào điều gì khác, và bạn có thể ' t giấy chứng nhận tin cậy trừ khi bạn biết ngày).

Vì vậy, không, bạn không cần một hệ thống cho tất cả các hệ thống 'thời gian thực'. Tuy nhiên, tùy thuộc vào ứng dụng của bạn, bạn vẫn có thể muốn RTC là cách hiệu quả nhất về năng lượng để có được bản sửa lỗi thời gian tốt sau khi ở trạng thái năng lượng thấp.


Điều đó không hoàn toàn đúng. Ví dụ, bạn có thể tin tưởng một chứng chỉ (đặc biệt là chứng chỉ được ghim) mặc dù nó đã hết hạn hoặc theo lý thuyết được cấp trong những gì dường như là tương lai. Tuy nhiên, nói chung, nên sửa lỗi NTP của bạn trước khi thử làm ứng dụng khách SSL; các chương trình bảo mật tự nhiên cho NTP phải được thiết kế để hoạt động mà không cần phải bắt đầu với một ý tưởng hợp lý về thời gian.
Chris Stratton

3
Quá mức cường điệu và trong khi cường điệu là một điều ấm áp và đẹp đẽ, nếu nó tạo thành thông điệp chính, thì đó là sai. Không phải là phương thức hoạt động của mật mã về cơ bản đòi hỏi thời gian hoặc ngày tháng.
Paul Uszak
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.