如何評價這個CPU設計?
顯卡吧的基佬作品 (MIPS32架構,超純量雙數據路徑,五級流水線)
鏈接個人設計的CPU:MIPS32架構,超純量雙數據路徑,五級流水線
本科生課程設計中的一流水平,大一能做到這樣相當相當棒了。
能寫出來就不錯了,大一就做這事肯定是對計算機架構很感興趣,值得鼓勵!
接下來還有很多步驟,比如功能驗證,後端綜合布局布線,時序分析,等等
架構層面的設計在寫之前還有很多步驟,主要是經驗豐富的老工程師在大方向上把關,然後各種小兵做架構級別的模擬,等等
有這樣的人才,祖國晶元產業一定會蒸蒸日上同意樓上觀點,大一能理解CPU架構已經是預習過了,能理解流水線,參考改編已有設計並且把schematic圖畫出來實屬不易。樓主居然還出了synthesis。
單論CPU架構理解和處理器設計水平已經比我當年大二結束好了,應該可以和當年學校里那幾個去Altera實習的貨比試一下。
我自己對大一學生水平的理解是是:
能理解CPU架構,知道Program Counter是什麼,寄存器地址是什麼,這兩者綜合起來是怎麼和Machine Code聯繫起來,進而如何和 Assembly Codes聯繫起來從而理解軟硬體協作的根本通道。
這是非常優秀的大一學生。
能夠知道數字邏輯,知道邏輯電路的邏輯基礎,能夠知道AND,OR,NAND,NOR, XOR,NOT6大基礎邏輯門電路。
這是可以給優秀的大一學生。
樓主和同齡人已經是田忌賽馬了。
比較基準:全球電子工程top15學校的學渣,也就是我。
「看完發現我大學白上了」系列
我覺得這個我可以回答一下
先上結論:大一如果能獨自用verilog寫出來這個架構並且能夠synthesis,不論優化如何都已經很厲害了=========================================
lz現在研一,海外黨,本科也在同一個學校讀。鏈接里實現的這個架構算是一個經典設計,5-stage pipeline,應該是某本美國這邊經常用來當教科書的教材里的架構,很多reasearch paper也是基於這種架構進行的。大三時候上的一門課主要就是講這個架構。我們當時也有要求個人實現,但是不是用verilog,而是c。難度還是差了很多的。然後我當時大四時的畢設跟題目描述反而比較接近,當時是做了一個out-of-order的CPU還得再額外加功能,我們當時選了個3-way superscalar還有個load-store queue還有一些亂七八糟的cache優化吧。
問題是,我們當時這個是5個人做一學期(或者說半學期,後半學期才能開始做)的project。而且verilog也是各種麻煩,尤其是synthesis,verilog simulation能過跟你synthesis能過完全是兩件事。。。反正當時那段時間每天都弄到三四點吧========================================雖然5-stage整個架構還蠻好懂也不算難,但考慮到只有大一,還是用verilog寫,只能服額,我也來簡單評價下,畢竟上個學期剛做了MIPS晶元的設計實驗,趁著腦子裡的東西還沒忘空,趕快來講一講。
如果這位是為了完成FPGA設計的話,無疑他完成的非常優秀。大學一年級能完成這份工作,如果沒有旁人的幫助的話,他的毅力與執行力這的稱道。簡單說來,晶元設計是工程學。他對理論設計的能力要求,沒有想像中的那麼高。如果不是要真的流片,把晶元實際做出來,就更簡單了。如果大家小的時候玩過樂高、電子積木、甚至是安裝四驅車,大家應該對拼東西這個概念都有理解。晶元設計其實和這個差不多,大家把需要的部分擺在桌子上,寫一寫連線,在ISE軟體裡面跑一下模擬,燒到FPGA板子里看一下結果,(對於我)就可以把實驗報告交上去了。(當然也是因為我是個學渣,比較弱)如果對於晶元設計有興趣的話,我很高興於能為大家介紹幾位浙江大學的老師的個人主頁,大家如果有時間可以來看看。劉鵬副教授http://mypage.zju.edu.cn/liupeng/592253.html韓雁教授http://mypage.zju.edu.cn/hany/576589.html——————————————————分割線下面可以不看————————————————這裡有兩個問題,一個是硬體,另一個也是硬體。首先是硬體,晶元的設計,如果是一個碩士、博士級別的工作的話,是要考慮流片的。我之前提到過,晶元設計是工程學。既然是工程學,就要考慮成本,考慮工藝誤差(或者用我剛學到的詞:工藝角)。成本很好理解,晶元面積越大,成本越高,所以晶元里部件所佔的面積比應該儘可能的高(百分之八十)。工藝角則是考慮溫度變化以及晶元生產的時候每一個部件可能出現的誤差,從nMOS和pMOS的電流誤差考慮晶元性能,有很多學長辛辛苦苦做出來的晶元就是因為在某種情況下,晶元功能失效,不得不重(延)做(畢)。但這裡畢竟只是跑了系統模擬,連晶元的模擬都沒有做,就差的比較多了。第二個問題,這位設計的時候,其實可以理解成炫技,設計一個雙核的CPU。兩套數據匯流排兩套地址匯流排,用一個簡單的分支預測來決定數據通往哪一個核心。這裡我可以很果斷的作出判斷,這個雙核,性能非常的非常的差。
如果大家對此不以為然的話,回想一下奔騰4的膠水雙核,想一下性能,想一下耗能,想一下發熱。如果說單核CPU的設計核心還在於加法器、寄存器、匯流排等等的設計,多核CPU則是完全不同的重點了。簡單講,我可以用一個小程序讓這個CPU發瘋。1000 addi $1,$1,11004 j 1000根據這個分發策略,(我沒有看到這位設計解決Data Harzard的方法),會發生兩種情況:一個核心被完全忘記,這種情況是比較好的;兩個核心分別完成加法,互相等待對方完成計算。這種情況甚至不如做過轉發的單核心CPU。這個CPU想完成並行運算,但並沒有對並行進行優化。如果說這位想向CPU設計更進一步的話,我個人有兩點建議:第一點,放棄哈佛結構,開始讀一些Intel的晶元設計的書。哈佛結構固然結構簡單性能優秀,但是在面對通用領域的時候,性能最高有百分之五十的浪費,這是非常不合理的。普林斯頓結構(或者稱為馮諾依曼結構)固然複雜,卻是非常有用的,實際上我們用的大部分CPU,都是普林斯頓結構。(再次吐槽13級流水是人能設計的嗎,Intel你是外星人辦的企業吧)第二點,晶元設計領域非常的複雜,建議學一些半導體物理、晶元設計、超大規模集成電路設計、DSP應用等方面的課程,以讓自己面對更多的問題都能遊刃有餘。
順便一提DSP晶元都是並行,這位可以多看看。大一對於設計CPU感興趣,有前途。
看樓上很多回答很驚訝大一就會Verilog,不知是不是因為國內大一還沒怎麼開始學專業課。在NTU的話,所有CS和CE的學生大一上學期就會接觸Verilog,然後後續課程也有MIPS CPU的設計。我之前大一的時候為了準備一個workshop拿logisim做過一個非常簡單的CPU,然後大二一門課的project實現了一個16位MIPS的CPU,帶5級pipeline,data forwarding,early branch decision,自動stall pipeline解決dependency等等。不過後來交了作業就沒再改進過了。
代碼在這GitHub - koallen/mips-like-processor: CZ3001 Advanced Computer Architecture, AY 2015-16 Semester 1我大三時寫過一個8-bit RISC CPU,自定義的指令集,單指令單周期。最大的特點是支持硬體多線程(總要有點亮點)。
拉了室友移植了binutils使其支持彙編到二進位。外設包括PS2, VGA, GPIO。
demo運行在FPGA上,用彙編實現的。包括一個在顯示器上的簡易terminal用來做簡單的運算以及顯示存在flash的點陣圖,還可以控制燈。
項目的名字叫「MTM多線程處理器」,我設計了LOGO,還有完整的ISA手冊。當時參加了OpenHW開源硬體大賽,所有東西都開源了,http://www.openhw.org/project/index.php?act=viewid=290。
憑著做這個項目的積累,我一個計算機專業的學生畢業找到了Digital IC工程師的工作。
不過您可真的別當真,現在回過來看來那時的項目那才叫一個圖樣圖森破+拿衣服.....
VHDL
Verilog這種東西,只是做邏輯,可比單片機C語言/彙編語言容易多了。畢竟時代在飛速進步啊,現在這點破玩意兒隨便找個9歲小朋友都能完成的。到了大一才只能
做出這種爛玩意兒,也好意思出來炫耀。在很多年前,就算像我這種弱智,大一的時候該學的東西不好好學,不看書自己閉門造車,結果花了一星期才完成5級流水線(注意我也沒想到國內的野雞學校課也能那麼多,弄這個東西把我空餘時間全佔了,因為是瞎搞的,一開始有一級流水線延時特別大,改了不少才讓他們比較均勻,把頻率提上去的,不過其實想想也沒花多久啊),不也一直當成笑話講的。( 你們讀大學時,第一門編程課是用什麼編程語言? - 知乎用戶的回答 不信,可以去問 EDA技術與Verilog HDL 這本爛書署名的作者,哪個都可以。)
我就是來反對很多其他答案的。這有什麼厲害的。完全就是個水貨。
就是這樣認真上過 Verilog 課的本科生課程設計認真做的話大概就這樣吧。
簡單來點評一下。
要說不足,當然可以找出很多可以改進的地方,畢竟這只是一個非常簡單的模型。比如流水線長度太短啊,指令集目前指令還太少用起來不方便啊,分支預測模型太簡單啊,要不要來個cache啊等等。
所以挑這些問題都是沒有意義的,這裡只來評價他目前完成的情況。
從他目前完成的情況來看,做了5級流水線,簡單的分支預測,充分考慮了各種control hazard的情況並給出了解決方案,並且還synthesis出了硬體電路。這已經十分不容易了!
答主我在美國某公立大學讀研,本專業computer engineering排名也是全美十幾名。據我所知我們本科生一門computer organization的課,上課基本都是大三的學生,課程對他們的要求也就是「了解並掌握」流水線原理,control hazard和data hazard的處理方法,也沒有要求去實現。
這位少年剛上大一就能獨自設計出這樣的方案並能synthesis,即使是參照了現有的一些方案(architecture就這點東西誰不是參考的。。),能完全消化吸收也是十分不易了的!
祖國真心需要這樣的人才!大一編程屌炸天的倒是多了去,但是自己上大學前搞微電子也是太屌了,畢竟這個東西實踐難度太大了,幾乎沒有可能一個家庭有支持這種實踐的環境。
只想說大一這個程度,讓我這個搞體系結構phd,現在美一top半導體晶元廠商工作的渣渣感到羞愧。我大一的時候還不知道什麼叫做體系結構呢,verilog也沒聽說過。此小朋友有前途。
大一寫出這樣的東西很不容易了。作者可以繼續優化,比如out of order,各種cache的技術等等。答主所在大學本科生的computer architecture課程project就是做到這個level(不過是大三大四學生5個人一起做半個學期)。一般會做到R10K的renaming,load/store queue, branch prediction, cache會做一些write back, victim cache, stride prefetching等等。
本人大二,已經寫過一個類似的10指令五級流水MIPS 32處理器。正在寫擴充成50條指令的版本。老師說本科生能獨立完成這個,水平相當於可以與世界一流大學的本科生一較高下。題主大一就做出這個相當不容易了。贊一發!【電路其實沒必要手畫,學學Logisim,簡單易上手。(其實明白原理之後就可以不看電路直接上代碼了)】
大三的時候才做5級流水線的CPU... 給這位大神跪了
有點像那個《自己動手寫CPU》
wow 太棒了!好樣的!這孩子前途無量 趕緊培養
美國本科大三的水平吧
CSAPP即視感……我們大一下期末考TAT
推薦閱讀:
※有哪些不錯的介紹計算機體系結構的書籍?
※為什麼VS2017在win10運行界面變模糊?
※我想了解計算機發展史,有哪些書可以看?
※3個1次操作的for循環和1個for循環3次操作效率是一樣的嗎?
※將系統語言設置成英文,對提高英語水平有幫助嗎?