提問者不是計算機專業的學生,學的是自動化專業,做相關計算機實驗時,想到可編程晶元可以幫助計算機主cpu完成一些簡單操作,可不可以將cpu與可編程晶元類比為人的大腦和腦幹呢,大腦負責思考,腦幹控制簡單的生命活動。


對於自動化來說,沒必要糾結 CPU 的概念,那純粹是個學術問題。

如果你只糾結是否可編程,那麼FPGA跟CPU都可編程,把它當作CPU並無不可。

如果非要糾結可編程邏輯器件是否符合CPU的定義,我覺得這是魔怔了,除了學究考試,沒有實際意義。


CPU如果是一張計算卡。你在卡紙上寫下你要計算的東西,根據這張卡就能得到答案。但是必須按照這張卡的流程操作。

可編程晶元(單純指 FPGA)更像一張白紙,你可用它做任何事,但是你要自己寫算式,自己設計計算過程。設計的好的話可以比計算卡還好用,但是方便來說還是計算卡比較好。

或者計算卡中間有一些計算你可以拿出來自己用白紙自己的演算法算一下,讓整個計算過程既方便又快速。


看你怎麼定義CPU吧...

如果按照馮諾依曼的定義, 只要你能做出來計算器, 存儲器和控制器就算計算機

如果不具備這些組件, 哪怕功能再強也不能叫做計算機


可編程晶元比如說FPGA可以完成任意數字電路, CPU也是數字電路的一種

所以可編程晶元可以實現CPU, 但並不僅僅能實現CPU

同時還能實現例如數字鎖相環, 數字濾波器, 硬體視頻編解碼器等數字電路


另外, FPGA那不叫編程, 那叫做描述硬體

你寫一個乘法那就是描述了一個乘法器出來, 多描述幾個...硬體資源就不夠了

一般也不會用浮點, 因為描述一個符合IEEE 754的浮點運算單元多佔資源啊, 在允許的精度範圍內做定點數運算就好了

不像軟體, 你寫多少個乘法那都是在處理器上按時間順序執行的指令

所以, ACM里的位魔法都是硬體描述里的基本操作了, 移位以及基本邏輯門硬體實現起來多簡單


可編程晶元,我狹義定義為fpga。

下面用大白話和例子來說明。大白話基於你理解基本數字電路的實現。

FPGA,是給了一堆通用數字電路單元(logic cell),以及連線斷路器的晶元。所以FPGA編程的過程到了最底層就是把數字電路單元選成你要的功能以及對各個單元進行連線。說白了,你做的就是創造了一堆有特定用處的數字電路。

CPU本身,就是一堆前人設計好的數字電路。所以CPU的編程到了最底層就是通過機器碼去控制前人設計好的電路。機器碼哪裡來?就是你寫的軟體代碼,通過編譯器變成彙編,再從彙編變成機器碼,映射到硬體上。說白了,你做的事情是在控制一個人家設計好的數字電路。

所以其實這倆玩意最大的區別,是抽象級別不一樣。cpu是更高級的抽象,他是一堆按照特殊需求設計出來的數字電路。而可編程晶元,你可以理解為就是數字電路本身。

要類比的話,cpu如果是大腦,那fpga就是一堆排列整齊,但是各自獨立的神經元。

至於你說的,可編程晶元可以幫助計算機主cpu完成一些簡單操作,不太確定具體是啥玩法,有點異構計算的意思?


可編程一般是fpga那種的,它分為電路和載入程序。電路為模塊,比如一個裡面有多路選擇器,flipflop,門電路等等。載入程序會控制打開這個模塊中你需要的硬體。最終這些模塊組成了一個定值硬體。

還有就是cpld,原理類似,但是只有門陣列。寫入程序用來控制連接開關。

另外如果你指的是單片機這類,那麼原理與電腦相同。


不算,但是你可以用fpga的資源用實現一個cpu的功能


https://www.intel.cn/content/www/cn/zh/products/programmable/fpga/new-to-fpgas/resource-center/overview.html


看你說的是哪種可編程晶元了。單片機那些,內部本身有一個CPU。

FPGA這些可編程晶元,它能做的事情可不比什麼CPU少(畢竟,FPGA可是能變成一個CPU的呢~),聽說n月前某公司還拿來替代CPU做計算來著。如此看來,比作大腦腦幹的比喻,並不合理。它們可以像左右腦,也可以像大腦腦幹。


那麼具體區別呢?CPU就像一個翻譯機器,把代碼扔給它,它幫忙翻譯,什麼add x, y翻譯為加法等等。而FPGA、CPLD這類,更像你去設計一款專門的IC,指定它該做什麼。不然FPGA用的語言怎麼會叫硬體描述語言呢(笑)。

題外話,和題主同專業hhhhhhhh,咱們自動化還是不要在乎這些細節吧~FPGA這種東西,在一些地方喜歡的話把它作為主力都行,然後拿個單片機為輔,聽起來是不是反過來了~可編程晶元變成了大腦,CPU變成了腦幹


CPU其實是一個計算機單元的稱呼,Center Processing Unit,它是計算機的核心運算模塊,CPU這個詞就是主要用來描述這個單元,而不是單個晶元,現代的CPU也有核數,這更能表明CPU是一個整體的單元概念,指代計算機中負責核心計算的一個(一群)晶元。

而編程晶元就是一個控制中樞(可以這麼比喻吧),編程者提前寫好程序,然後編程晶元執行。其實CPU中每個核就是一個編程晶元。

我不是專業人士,如果有錯,請在評論區提醒,我會第一時間修改


因為題主不是本專業的。所以這麼理解也沒錯。

但有個更加符合現實的比喻:

可編程晶元,你可以把它看成是還沒搭建起來的積木,具體什麼樣子和功能你可以自己定製。而cpu就是大神手裡已經完成的積木神作,可以觀賞,可以通過各種手段完成各種功能,但是太大了,不太方便。

cpu 中央處理器,他很厲害但是也很貴(主要原因) 所以在有些時候cpu和可編程晶元都能做的情況下,優先考慮可編程晶元。

還有有些事情cpu也干不好

最常見的我們現在用的電腦CPU和GPU的功能就是分開的,GPU負責各種顯示。


看怎麼定義cpu,中央處理器,系統的中心位置的處理單元,都可以這麼稱呼。可編程也有處理能力,也可以獨當一面,所以。


CPU只是晶元中的一個,晶元編程屬於硬體開發


推薦閱讀:
相关文章