Tại sao đồng hồ được sử dụng trong máy tính?


22

Như tôi biết, đồng hồ điều khiển tất cả các hoạt động logic, nhưng nó cũng giới hạn tốc độ của máy tính vì các cổng phải chờ đồng hồ thay đổi từ thấp sang cao hoặc cao sang thấp tùy thuộc vào thành phần. Nếu không có đồng hồ nào được kết hợp, các cổng sẽ thay đổi nhanh nhất có thể bất cứ khi nào được đưa ra lệnh, vậy tại sao điều đó không làm tăng tốc độ máy tính và tại sao đồng hồ được sử dụng?


Không có thời gian cho một câu trả lời thích hợp, nhưng ở cấp độ cơ bản nhất, vì vậy tất cả những thứ kỹ thuật số đang diễu hành theo nhịp của cùng một tay trống. Tra cứu đồng bộ so với không đồng bộ.
Matt Young

có thể trùng lặp tín hiệu đồng hồ trong máy tính và máy móc , (và câu hỏi đó đã bị đóng vì không phải là câu hỏi thực sự ...)
amadeus

Đối với một phạm vi hẹp của các tác vụ, máy tính analog có thể nhanh hơn máy tính kỹ thuật số.
Nick Alexeev

1
Vì vậy, họ biết mấy giờ rồi! (xin lỗi, không thể cưỡng lại)
Scott Seidman

Câu trả lời:


32

Đồng hồ được sử dụng trong máy tính vì lý do đơn giản là hầu hết nếu không phải tất cả tính tuần hoàn là logic tuần tự đồng bộ .

Trong một mạch đồng bộ, một bộ dao động điện tử được gọi là đồng hồ tạo ra một chuỗi các xung lặp đi lặp lại được gọi là tín hiệu đồng hồ được phân phối cho tất cả các thành phần bộ nhớ trong mạch.

Bây giờ, điều đó có vẻ không thỏa mãn và được cấp, bạn sẽ hỏi một cách hợp lý "tại sao các mạch đồng bộ được sử dụng trong máy tính?" nhưng đó cũng là một câu hỏi dễ trả lời :

Ưu điểm chính của logic đồng bộ là tính đơn giản của nó. Các cổng logic thực hiện các hoạt động trên dữ liệu đòi hỏi một lượng thời gian hữu hạn để đáp ứng các thay đổi đối với đầu vào của chúng. Điều này được gọi là trì hoãn lan truyền. Khoảng thời gian giữa các xung đồng hồ phải đủ dài để tất cả các cổng logic có thời gian đáp ứng với các thay đổi và đầu ra của chúng "giải quyết" các giá trị logic ổn định, trước khi xảy ra xung đồng hồ tiếp theo. Miễn là điều kiện này được đáp ứng (bỏ qua một số chi tiết khác), mạch được đảm bảo ổn định và đáng tin cậy. Điều này xác định tốc độ hoạt động tối đa của một mạch đồng bộ.

Một lĩnh vực hoạt động nghiên cứu là điện toán không đồng bộ trong đó hầu hết nếu không phải tất cả các mạch là logic tuần tự không đồng bộ .


Đoạn Wikipedia về logic tuần tự không đồng bộ khá ngắn gọn; Có thể hữu ích để phân biệt giữa logic không có đồng hồ đơn lẻ nhưng có thể đảm bảo rằng đầu vào của mạch sẽ không gây ra tình trạng chủng tộc hoặc tệ nhất là đầu ra của bất kỳ mạch nào có đầu vào có điều kiện đua sẽ không đã sử dụng.
supercat

Tôi nghĩ rằng đáng để lưu ý rằng có một máy tính không đồng bộ hoàn toàn được chế tạo bởi Jacek Karpiński , được đặt tên là KAR-65. Thật không may, tôi không thể tìm thấy bất cứ điều gì về nó bằng tiếng Anh.
elmo 17/12/13

6

Hãy tưởng tượng bạn có một số nguyên 8 bit được gửi từ bộ nhớ đến ALU để tính toán và (ít nhất là cho ví dụ này) rằng mạch bộ nhớ cung cấp tín hiệu trên 8 dòng dữ liệu trước khi ALU yêu cầu chúng và ở các thời điểm hơi khác nhau.

Việc sử dụng đồng hồ ở đây sẽ đảm bảo 8 dòng dữ liệu giữ đúng giá trị cho số nguyên được biểu thị cho một chu kỳ đồng hồ và ALU sẽ "thu thập" dữ liệu đó trong cùng một chu kỳ đồng hồ.

Tôi nhận ra rằng đó có lẽ không phải là mô tả tốt nhất, về cơ bản nếu không có đồng hồ đảm bảo tính nhất quán của dữ liệu sẽ khó khăn hơn nhiều so với bất kỳ sự gia tăng nào về tốc độ sẽ có giá trị, bạn sẽ gặp phải nhiều vấn đề về tình trạng chủng tộc.


6

Một mạch như một đơn vị logic số học sẽ lấy một vài số làm đầu vào và tạo ra một số là ouptut. Nó có thể đảm bảo rằng trong một khoảng thời gian, tất cả các bit của đầu ra sẽ đạt đến trạng thái cuối cùng chính xác, nhưng lượng thời gian thực tế để các bit đầu ra trở nên hợp lệ có thể thay đổi đáng kể dựa trên nhiều yếu tố khác nhau.

Có thể xây dựng ALU với đầu vào "hợp lệ" và đầu ra "hợp lệ" và chỉ định rằng đầu vào "hợp lệ" thấp trong một khoảng thời gian đủ trước khi thực hiện tính toán và đầu vào dữ liệu chứa giá trị mong muốn trước khi đầu vào "hợp lệ" tăng cao, đầu ra "hợp lệ" sẽ không tăng cao cho đến khi các bit đầu ra trên thực tế là chính xác. Một thiết kế như vậy có thể sẽ cần khoảng gấp đôi mạch điện so với ALU thông thường [về cơ bản, nó sẽ phải theo dõi xem mỗi bit được "biết" là 0 hay "được biết" là một; đầu ra "hợp lệ" của nó sẽ trở thành đúng khi trạng thái của mọi bit đầu ra được biết].

Để làm cho mọi thứ tồi tệ hơn, cho phép các bộ phận của CPU có khả năng chạy nhanh hơn để làm như vậy sẽ chỉ hữu ích nếu chúng không chờ đợi tất cả các phần chậm hơn để chơi bắt kịp. Để thực hiện điều đó, phải có logic để quyết định phần nào của máy "đi trước" tại một thời điểm nhất định và chọn một quá trình hành động dựa trên điều đó. Thật không may, loại quyết định đó là một trong những quyết định khó khăn nhất đối với thiết bị điện tử. Việc quyết định một cách đáng tin cậy sự kiện nào trong hai sự kiện xảy ra trước thường chỉ dễ dàng nếu người ta có thể đảm bảo rằng sẽ không bao giờ có bất kỳ "cuộc gọi gần" nào. Giả sử một trình sắp xếp bộ nhớ đang xử lý một yêu cầu từ đơn vị xử lý số 1 và đơn vị số 1 có một yêu cầu khác đang chờ xử lý sau đó. Nếu đơn vị số 2 gửi yêu cầu trước khi yêu cầu đầu tiên từ số 1 hoàn thành, đơn vị bộ nhớ sẽ xử lý việc đó; nếu không, nó sẽ xử lý yêu cầu tiếp theo từ đơn vị số 1. Đó có vẻ là một thiết kế hợp lý, nhưng cuối cùng lại có vấn đề đáng ngạc nhiên. Vấn đề là nếu có một thời điểm mà một yêu cầu nhận được trước thời điểm đó sẽ được xử lý ngay lập tức và một yêu cầu nhận được sau đó sẽ phải chờ, thì thời gian cần thiết để xác định xem một yêu cầu có vượt quá thời hạn không gần như tỷ lệ nghịch với chênh lệch giữa thời gian nhận được yêu cầu và thời hạn. Thời gian cần thiết để đơn vị bộ nhớ xác định rằng yêu cầu từ số 2 vượt quá thời hạn một giây có thể vượt quá thời gian cần thiết để phục vụ yêu cầu thứ hai từ đơn vị số 1, nhưng đơn vị không thể phục vụ hoặc yêu cầu cho đến khi nó quyết định cái nào sẽ phục vụ trước.

Có tất cả mọi thứ chạy trên một đồng hồ chung không chỉ loại bỏ nhu cầu cho mạch để xác định khi nào đầu ra của một tính toán hợp lệ, nó cũng cho phép loại bỏ "các cuộc gọi gần" đúng lúc. Nếu mọi thứ trong hệ thống hết xung nhịp 100Mhz, không có tín hiệu nào thay đổi theo đồng hồ cho đến 1ns sau cạnh đồng hồ và mọi thứ sẽ xảy ra để đáp ứng với cạnh đồng hồ xảy ra trong vòng 7ns, thì mọi thứ sẽ xảy ra trước một cạnh đồng hồ cụ thể sẽ "thắng" ít nhất 3ns và mọi thứ sẽ không xảy ra cho đến sau khi cạnh đồng hồ sẽ "mất" ít nhất 1ns. Xác định xem tín hiệu có cơ hội trước hay sau đồng hồ hay không, khi nó được đảm bảo không bị "đóng", sẽ dễ dàng hơn nhiều so với việc xác định tín hiệu nào trong hai tín hiệu có thời gian tùy ý xảy ra trước.


4

Hệ thống kỹ thuật số có thể là đồng bộ hoặc không đồng bộ . Trên các hệ thống không đồng bộ, đầu ra có thể thay đổi tại bất kỳ thời điểm nào, khác với các hệ thống đồng bộ, phụ thuộc vào đồng hồ để thay đổi đầu ra của nó.

Hầu hết các hệ thống kỹ thuật số là đồng bộ (mặc dù chúng có thể có một số phần không đồng bộ) vì dự án và phân tích lỗi có thể được thực hiện dễ dàng hơn, vì các đầu ra chỉ có thể thay đổi theo đồng hồ.

Tôi đã sao chép khá nhiều thứ này từ Digital Systems: Principles and Applications, 10th edition by R. J. Tocci et al.


3

Chà, nếu bạn đang thiết kế một hệ thống đồng bộ, bạn có tốc độ xung nhịp đích và bạn thiết kế logic để hoàn thành tất cả các tính toán trong một chu kỳ trong một khoảng thời gian. Điều này cũng có nghĩa là bạn cần kết hợp một giới hạn an toàn để cho phép các điều kiện khác nhau, chẳng hạn như điện áp cung cấp điện thấp, nhiệt độ cao và chip "chậm". Các chip đồng bộ được thiết kế sao cho đường dẫn logic dài nhất (tính toán chậm nhất) sẽ kết thúc đúng lúc trong tất cả các điều kiện bất lợi này. Kết quả là, khi điều kiện không tồi tệ, bạn sẽ có nhiều thời gian / lề hơn giữa khi logic hoàn thành hoạt động của nó và đồng hồ tiếp theo chốt kết quả. Vì bạn (thường) không thể thay đổi tần số đồng hồ, bạn sẽ mất tốc độ này.

những mô hình logic hoàn toàn không đồng bộ tồn tại, ví dụ một mô hình mà tôi quen thuộc là logic quy ước NULL. Sử dụng các nét rộng để mô tả những gì đang xảy ra, mạch logic có thể xác định khi hoàn thành một phép tính và có thể tạo ra các tín hiệu "đồng hồ" của riêng mình một cách hiệu quả. Điều này cho phép mạch chạy nhanh nhất có thể, và có một số lợi ích khiêm tốn về năng lượng và EMI. Thật không may, bạn phải trả tiền phạt cho bản chất không đồng bộ về mật độ thiết kế cũng như hiệu suất hàng đầu. Ngoài ra, trong khi các công cụ phần mềm để thiết kế và xác thực đồng bộ đã hoàn thiện, rất nhiều thiết kế và xác nhận cho các thiết kế không đồng bộ vẫn là thủ công, dẫn đến nỗ lực lớn hơn để thiết kế và xây dựng một thiết kế không đồng bộ.

Điều này cũng hoàn toàn bỏ qua trường hợp đôi khi bạn cần một chiếc đồng hồ cho một ứng dụng cụ thể để tham khảo thời gian. Ví dụ: card âm thanh của bạn không thể hoạt động không đồng bộ vì cần cập nhật ADC hoặc DAC ở tốc độ mẫu chính xác, cụ thể hoặc âm thanh sẽ bị biến dạng.


1

Nếu không có đồng hồ nào được kết hợp, các cổng sẽ thay đổi nhanh nhất có thể bất cứ khi nào được đưa ra lệnh, vậy tại sao điều đó không làm tăng tốc độ máy tính và tại sao đồng hồ được sử dụng?

Nói một cách đơn giản: bởi vì con người không phải là những sinh vật siêu thông minh và phải dùng các phím tắt để thiết kế các mạch phần tử có thể.

Khi máy của chúng tôi hoạt động, chúng có thể thoát khỏi đồng hồ, vượt qua minutae như tạo ra một mạch không có đồng hồ có thể sản xuất được mặc dù có sự thay đổi quá trình và tận dụng một số mức tăng tốc độ.

Để mở rộng một chút: những thứ rời rạc, có thể dự đoán sẽ dễ dàng hơn để phân tích và thiết kế một cách hợp lý. Là một lợi ích gia tăng rất lớn, họ tự sửa (trong trường hợp này là thời gian tự sửa). Đây là lý do chúng tôi sử dụng logic kỹ thuật số ở nơi đầu tiên. (Tương tự như vậy, trong lập trình, chúng ta thường sử dụng các số nguyên thay vì các cấu trúc điều khiển dấu phẩy động quen thuộc thay vì goto-spaghetti và các ngôn ngữ với một vài quy tắc rõ ràng thay vì các ngôn ngữ rất "linh hoạt" mà bạn không bao giờ chắc chắn điều gì sẽ xảy ra cho đến khi mã chạy


Ngay cả ngoài thực tế là logic đồng bộ dễ thiết kế hơn, máy tính chạy xung nhịp 10 MHz thường sẽ được thiết kế sao cho mọi nơi phải xác định xem sự kiện X xảy ra trước Y, một hoặc cả hai sự kiện sẽ bị trì hoãn vì cần thiết phải có mối quan hệ cụ thể với đồng hồ chủ để các sự kiện sẽ không bao giờ xảy ra đồng thời. Hơn nữa, trong một số trường hợp khả năng hành động đồng thời có thể xảy ra, có thể chấp nhận thêm độ trễ cố định hai hoặc ba chu kỳ để ép một hoặc cả hai tín hiệu vào mối quan hệ đồng hồ cố định.
supercat

Nếu thiết kế không đồng bộ, người ta có thể thấy rằng 99% hướng dẫn ngẫu nhiên mất 5ns, 0,9% lấy ngẫu nhiên 10ns, 0,09% lấy 30ns, 0,009% 100ns, 0,0009% 300ns, 0,00009% 1us, 0,000009% 3us, v.v. công ty đảm bảo hệ thống có thể mất bao lâu để giải quyết sự mơ hồ về thời gian. Trong hầu hết các trường hợp, có hiệu suất dưới mức tối ưu nhưng có thể dự đoán sẽ tốt hơn hiệu suất trung bình nhanh hơn nhưng có các biến thể không thể đoán trước đôi khi nghiêm trọng.
supercat

@supercat 1) Không thể thiết kế một mạch trong đó các sự kiện đồng thời không bao giờ xảy ra? (ít nhất là nếu các đầu vào đủ đều đặn) 2) Không thể thiết kế một mạch trong trường hợp không xảy ra nếu sự kiện xảy ra đồng thời?
Alexanderr Dubinsky 17/12/13

Nếu thời gian tương đối của hai sự kiện được biết đến, người ta có thể ngăn chúng xảy ra đồng thời bằng cách trì hoãn sự kiện này hay sự kiện khác. Thời gian tương đối của chúng được biết chính xác hơn, độ trễ sẽ được yêu cầu càng ít. Nếu không biết thời gian tương đối, có thể giải quyết hai sự kiện có thể xảy ra đồng thời thành một dấu hiệu xảy ra trước, nhưng để giảm thiểu hành vi trong trường hợp xấu nhất, người ta phải chấp nhận một số thỏa hiệp khá nghiêm trọng trong hành vi trong trường hợp tốt nhất. Những thỏa hiệp cần thiết cho một máy tính không có đồng hồ hoạt động sẽ tồi tệ hơn so với sử dụng đồng hồ.
supercat
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.