在理想狀態下,CPU需不需要工作在一個時鐘下?

我的問題類似於計算機為什麼需要工作時序,可以移除時序嗎,這在邏輯上是一種什麼樣的概念? - 邏輯思維。但是遺憾的是,這個問題還沒有人回答過,而我也想不明白。作為前序,我也已經問了這樣一個問題:為什麼CPU的邏輯電路越精簡,它的工作頻率就可以越高? - 中央處理器 (CPU)。

我的問題很簡單。假設集成電路是理想的,也就是說,電信號在電路上的傳播無限快,毫無延時,輸入端稍有變化,在零時間內就反應到輸出端。假如這樣,CPU還需不需要工作在一個時鐘下?

為了簡單起見,我們先只考慮如下情況:一段程序已經裝入到內存,就等著CPU取第一條指令開始執行了。


騷年,你前幾個問題水平太低,沒人回答很正常。這個問題還行。

答案很簡單,仍然需要時鐘。你要搞明白,之所以需要時鐘,是因為有寄存器和存儲器的存在,它們都是時鐘驅動的。計算部件並不需要時鐘。

為什麼一定要寄存器和存儲器?是因為需要反饋控制,需要利用舊值產生新值,這是硬體自動工作的基礎。舉個例子,做一個很簡單的counter,每隔一段時間加1,你必須存儲舊值,再在舊值基礎上相加,存儲舊值就需要寄存器,用寄存器就需要時鐘。

那麼速度無限快能帶來什麼?寄存器中的組合邏輯延時會限制系統頻率,延時是因為電阻和電容的存在。假設如你所說,電路延時為0,那麼時鐘頻率理論上可以無限高,性能可以很強,僅此而已。但是,你仍然需要時鐘。


a=a+1

機靈抖完了,你的問題不好答是因為跳過很多基礎的概念,問題的前提本身也是值得推敲和展開的,而且更像個邏輯悖論。。。 如果大家對CPU的理解還是寄予目前的定義,那麼不管電路多塊,還是需要時序。如果你反駁說極快的電路會湧現出新的設計方法,那麼得請非同步設計的相關人員來回答理論可能性,工程可能性再說了,不能無休止的展開了。。。

首先,你的問題和CPU其實沒什麼關係,更像是非同步設計和同步設計的問題,CPU是個太複雜的概念,裡面包含了非同步和同步設計,所以不能輕易反駁你是否有些地方真的可以不用時鐘。但從你以前的問題來看,你對為什麼用時鐘還沒有很清楚,因此我去回答了你說沒人答的那個題目。

其實你如果把電路行為理解為通信,通信有個很重要的概念叫做同步,就是大家寄予一個共同的基準來完成交互。如果不同步,我們可以用握手的方法

跨越鴻溝:同步世界中的非同步信號 ,總是是要約定個什麼的,參考系啊什麼的~

另外,瞬時就不用想了,能量不守恆啊,我覺得瞬時的東西更像原子彈。。。而不是CPU了

隨便搜了點碩博論文,有興趣的可以去看看

非同步電路設計_百度百科

http://d.wanfangdata.com.cn/Thesis_Y1556829.aspx

http://d.wanfangdata.com.cn/Periodical_jsjfzsjytxxxb201103024.aspx


謝邀,我這方面其實是外行,CPU底層硬體接觸的不算太多。

我認為理想電路是不存在的,是物理上不存在的,因為電信號傳播速度是有上限的,那就是光速。

電信號傳播的本質是電場,電場的速度是光速,所以電信號在CPU上傳輸必然有一定延遲。另外,任何攜帶信息的傳遞都是不能超過光速的(參見人浪的速度可以超越光速嗎? - 民間科學家,這裡有很多精彩的回答)。

所以,想像一下,對於CPU來說電場從一側傳遞到另一側是需要時間的,即使過門的時候沒有開銷,只不過是功耗會降低很多。對於i7-4770k來說,它的die size是177mm^2,那麼如果它是正方型的,邊長就是13mm,光速除以13mm可以得到一個數值,這個數值就是理論上的最大頻率,這個數字大概是23GHz,CPU再快也不可能超越這個主頻。

所以,整個後面的推論就都不成立了,物理層面上有障礙。況且現有的寄存器、DDR內存都是基於時鐘來設計的,真要在理想電路里,這些設計都要推到重來。


我只想說大家好閑啊,這種問題也有這麼多人回答。

----------------------------8.23更新--------------------------------------------------------

本來是不想回答這種問題的,但今天又看到了,忍不住想認真答下。哎,自己真手賤。 題主,這個題目本來是個挺好的問題,但你要加那些亂七八糟的描述幹嘛呢?那我分兩步回答吧。

------------------------------------------------------------------------------

1,CPU中為什麼需要時鐘?

因為邏輯電路分為兩種,一種是組合邏輯(combinational logic),無存儲功能,無需時鐘;另一種時序邏輯(sequential logic),有存儲功能,需要時鐘。

時序邏輯(有memory and register)是用來存儲數據,可供以後使用。

舉個例子,如果你要做累加,計算

s=0;

for (i=0;i&

s = s+X{i} ;

如果不用時鐘,只用組合邏輯,設計為下圖。但可以看到這個設計有問題,無法實現結果。

所以就需要時序邏輯儲存中間值,結構如下:

所以在實際的電路系統中,是由時序邏輯與組合邏輯共同組成。時序邏輯儲存中間值,可分割組合邏輯。流水線就是這樣,能提高時鐘頻率,增加系統吞吐量,讓每個模塊的利用率達到最大。如下圖所示:

2, 電信號在電路上的傳播無限快, CPU還需不需要時鐘?

回答:仍然需要時鐘,因為你還得需要時序邏輯儲存中間值。至於傳播無限快我就不想吐槽了。

當然如果你只用非同步電路是可以不用時鐘,但至少十年之內時序電路還是毫無疑問的主流。

--------------------------------------------------------------------------------------------------------

Reference: Vladimir Stojanovic Krste Asanovic


時鐘本來就是引進來簡化邏輯的,無論是否理想情況。它完全可以不需要。

1,非同步cpu有存在,完全沒有時鐘。

2,電阻不需要時間,但是電阻的變化,電流充電都需要時間。

時鐘就類似人類的政府和組織。cpu 現在也幾十億管子,地球上所有人沒有組織和政府,

每個人一個語言,能做什麼事?


cpu因為其通用性和軟硬結合的特性,除了考慮其計算性能外,還要考慮各功能宏模塊的調度。那麼在調度過程中,就存在執行順序的問題,也許將來計算速度很理想,但是調度問題也依然存在,即使將來沒有寄存器結構和時序,但還需存在一種調度機制。當前技術下,只能在非同步電路和時鐘之間二選一。我覺得@Arthur Wang 的答案很贊。

題目描述的情況比較適合純硬體加速的電路。


啊,謝邀。

這個問題提得實在太好了,深入探究和嚴謹證明需要很多理論計算機科學的東西,怎麼就邀請了我這EE學渣來回答這個問題囧。。。這種問題還是拋磚佔位等大牛來回答比較合適。

看了問題描述,感覺題主是想探究電子計算機的性能瓶頸到底在什麼地方。姑且把現在的電子計算機都認為是和圖靈機等價的,CPU僅由數字邏輯電路組成,那麼把圖靈機和現代的電子計算機一對比,可以發現以下的幾個條件幾乎是等價的:

  • 用於輸入的有限符號表 =&> 有限的彙編指令操作碼和操作數組合
  • 讀寫控制規則 =&> ALU/PC和MMU(有的計算機沒有MMU)
  • 狀態寄存器 =&> 和Architectural State相關的寄存器集合

在這上面我想討論的主要是最後一條,就是和Architectural State相關的寄存器集合。在這裡引入了一個寄存器(register)的概念,寄存器的作用簡單點說來就是把數據放在其中,等稍後再用。在數字電路裡面,寄存器是用Flip-Flop實現的,無論是現實的還是理論的Flip-Flop,都有一個時鐘輸入CLK。在理論上我們可以看到這個FF是在時鐘的跳變沿才更新的,在理想的電路中你可以把這個CLK看作是與狀態寄存器的具體數據和ALU中組合邏輯決定的一個個「狀態」跳轉相關的一個指示信號,矩形的時鐘信號可用衝激信號代替。現實中的時序邏輯電路的邏輯狀態轉移特性使其都可以被看作是一個有限狀態機,所以實際中我們所說的數字電路的「時序」,其實就是這麼一回事。「時序」存在的意義,一方面是為了在理論上表徵計算機在不同狀態上的切換過程;另一方面在工程上是給了一個量化分析CPU性能的依據,同時也在電路設計上給工程師們一個明確的優化調整電路的任務指標。理想的電路中是沒有延時,但是電子計算機CPU裡面那堆邏輯門組合代表的FSM還是那個FSM,依舊需要時序這個東西。用具體的語言描述,我們會說這個CPU的「上一個」/「這一個」/「第n個」狀態是怎樣怎樣的,只不過「時序」失去了時間尺度上的意義而已。這種情況下,時鐘信號就不用是矩形信號了,直接往裡灌一堆衝激信號就可以了哈哈哈。

上面的這些分析,其實是基於現有的電路設計方法不變,然後讓電路的工作能力逼近理想狀態得出的簡單結論。但是深入數字電路設計本身,實際的IC里時序邏輯電路能分為同步邏輯和非同步邏輯兩種不同的設計方法,根本原因在於邏輯門電路本身的非理想特性迫使工程師們去做一個取捨。如果電路器件的性能能夠做到大幅度的提高,甚至非常接近理想狀態了,那將會帶來一場數字集成電路設計的方法論的革命。在方法論的問題上本學渣的腦汁實在用完了,等高手指教。而圖靈機理論的指導性意義在於只要是圖靈等價的計算機,必然會存在「時鐘」或者「時序」這個概念

補充一點基礎知識:數字邏輯電路分為組合邏輯電路和時序邏輯電路,單用組合邏輯電路,是做不出來與圖靈機等價的計算機的。


需要時鐘是因為邏輯分為組合邏輯(無存儲功能)與時序邏輯(有存儲功能),而時序邏輯需要時鐘驅動。至於時序邏輯的用處上面有人的圖已經描述的很清楚了。

在理想狀態下仍然需要時鐘,因為時序邏輯的原因。


不好意思,作為一個觸發器,沒有跳變沿我真的不知道什麼時候寫入。(╯‵□′)╯︵┻━┻

在CPU里我還要和其他觸發器同伴們保持同步,沒有統一時鐘節奏就亂了。(╯‵□′)╯︵┻━┻


蟹妖~

題主假設信息傳遞的速度無窮,那就意味著運算是非常快的,因為計算機在運算的時候決大部分時間都消耗在延時上。

但計算機的操作不僅僅有運算,還有各個模塊的調度。

不難知道這種假設趨向是組合邏輯電路,那麼問題來了,對於一個基本的延時程序,題主打算如何解決?

如果沒有時序,那麼計算機怎麼理解「時間」這個概念?

而且,由於運算實在太過強大,那麼在傳輸的一瞬間,受到了干擾或者有雜訊,那麼就會使錯誤的運算結果瞬間傳遞開來,造成不可估計的「災難」。

數字電路根據邏輯功能的不同特點,可以分成兩大類,一類叫組合邏輯電路(簡稱組合電路),另一類叫做時序邏輯電路(簡稱時序電路)。組合邏輯電路在邏輯功 能上的特點是任意時刻的輸出僅僅取決於該時刻的輸入,與電路原來的狀態無關。而時序邏輯電路在邏輯功能上的特點是任意時刻的輸出不僅取決於當時的輸入信 號,而且還取決於電路原來的狀態,或者說,還與以前的輸入有關。


騷年,除了邏輯電路以外,還有一種東西叫「時序電路」……

另外,觸發器表示很桑心,已經哭暈在廁所……


「時序邏輯電路」,觸發器和鎖存器沒時鐘沒法工作

另外不可能存在不需要運行時間的計算機,否則停機問題可解(233),所以計算機不可能沒有時鐘


時鐘之於數字電路就像空氣之於人類,討論前者好比是在討論人類在真空中能否存活一般。


個人認為還是需要的,因為理想狀態下同一時刻也只能傳輸有限數據,所以用時鐘來確定不同數據傳輸的先後順序。


樓主所說,完全是組合邏輯的想法。

對於純數據流還好說,從上升時間下降時間估算個最大頻率,輸入輸出都用時鐘打幾拍,還可能實現。

用這種思維做cpu,功耗會難以想像,本來核心需要5ghz時鐘,io只要200mhz就足夠的話,非要把低頻時鐘拉高,增加無意義的時鐘驅動和翻轉率,少年,要液氮降溫么?

再說,我們心中的一個時鐘的概念是全局使用一個clk,中間隨便你怎麼打拍,都算一個時鐘的。輸入到輸出哪怕延遲一萬個clk,它們也是一個時鐘。

樓主,你想的是assign 或者always@*然後再用某時鐘采一下吧?


存取數據是個大問題


需要時鐘,我們需要告訴CPU什麼時候該做什麼事。


沒有什麼鳥影響 lambda演算說真相

最後還是圖靈機 邏輯運行一個樣

若是邏輯尚一致 有無時序又怎樣

勸君多做代數題 邏輯清晰最重要

看這位樓主很好學 送這位樓主一個符號

lambda 拉姆達 我函數編程神教聖物

在認得這個符號以後推薦著名計科科普讀物

SICP 計算機程序的構造和解釋

大家看我這個答案吼不吼啊~

最後祝大家身體健康 別忘了習題 再見 (^-^)/


推薦閱讀:

為什麼不能將計算機內所有原件集成到一塊晶元上?
製造 CPU 需要哪些技術,中國在其中哪幾項落後國外?
用ARM公版就能搭出手機晶元SOC嗎?
如果想要分析一個未知晶元的功能,可以採用什麼方法?
verilog代碼如何debug?

TAG:中央處理器CPU | 計算機科學 | 晶元集成電路 | 數字電路 | 計算機體系架構 |