可編程晶元也算是一個cpu嗎,他們有什麼聯繫?
提問者不是計算機專業的學生,學的是自動化專業,做相關計算機實驗時,想到可編程晶元可以幫助計算機主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的功能