從計算機CPU設計談P\NP問題(0)
一位網友偶然提起千禧大獎P\NP問題,引起了我足夠的興趣。從今天開始,藉助圖靈社群這個科研人員的沙龍,來討論一下這個問題。不論我們否能夠解決P\NP這個問題,一起討論自己感興趣的事情一定會愜意。做為一個包括CPU設計在內的計算機設計者,我認為從CPU設計的角度開始談這個問題最好。
為了能夠真實地討論問題,我將以給研究生講課的設計例項,按照教學進度每週一次發表我的設計程式,供朋友參考。
1. CPU設計就是一張表
計算機CPU如何設計?簡單地說,就是設計圖1-1這張表!
圖1-1中表的解釋部分暫時可以不看。從左至右分為指令編碼、節拍、標誌線和控制線四部分。為什麼要有這四部分?我們還要從計算機的基本結構和器件效能說起。
1.1. 器件
現代計算機的核心結構可以概括成:運算器、儲存器和控制器三大部分。這三大部分組織到一起能夠執行程式,即執行程式的核心,所以又叫核。如果將各部分細分,運算器包括實現各種運算的裝置;儲存器也不是一塊,要包括指令儲存器、資料儲存器和堆疊儲存器,還有臨時儲存資料的暫存器,計數器、節拍器和根據需要設計的各種暫存器。
1.1.1. 器件的狀態與控制
機器組成的器件分為兩種。一種是不受控器件。這種器件工作時狀態基本不變。例如固定電阻,固定電感、固定電容等。它們的特點是加電就工作,不能在工作中改變其基本狀態。另一種就是在工作中可以接受訊號改變狀態的器件,叫可控器件。例如計算機中的暫存器、儲存器、譯碼器、運算器等,它們都可以用控制訊號來改變狀態。
不受控器件沒有值得深入研究功能變化的問題,而對可控器件來說,由於狀態的不同,會產生不同的功能,因而是計算機功能設計必須深入探討的問題。
1.1.2. 器件的狀態標誌
計算機組成的器件基本上都有不同的狀態,一種狀態一般都用一條導線來標註。例如,暫存器有忙(被佔用)閒標誌,內部儲存資料是否為0的標誌,是否為負數的標誌等。器件狀態愈多,使用的狀態標誌線愈多。在計算機設計中,機器的狀態標誌線可以設計出來,也可以不設計出來。還拿暫存器來說,如果會發生使用衝突,那麼為了避免衝突,就要設定忙閒標誌,不然就不用設定。
1.1.3. 器件的狀態控制
怎樣才能獲得器件某種需要的狀態呢?這就需要控制,通過控制訊號,讓被控器件穩定在一種需要的狀態。
計算機中控制訊號也是用導線來發出的。一般是一條控制導線為1(高電位)時,就讓器件穩定在這條控制訊號需要的狀態上,導線為0(低電位)就不需要這種狀態。器件另外的狀態,有其他的控制線傳遞的1訊號來控制。由於一個器件的狀態是互斥的,因而對一個器件控制的導線只能有其中的一個為1,不然會亂套了。
可以想到,一個器件的狀態越多,控制線的數量越多。控制線越多,說明器件的複雜程度越高。例如計算機的算數運算器,可能包括的運算有加、減、乘、除,那麼就需要分別設計出控制這些運算進行的控制線。
1.2. 計算機資訊處理
計算機被稱為資訊處理器。為什麼?因為世界上的一切資訊都可以用二進位制數來表示。二進位制表示的資訊,如果等待處理,就稱之為二進位制資料。現在所說的計算機資訊處理都是二進位制資料處理的問題。如果能夠發明任何進位制的計算機,那麼計算機的資訊處理就會變得多樣化了,但原理是相同的。
所謂的資訊處理是指對資訊的蒐集、儲存、傳輸、轉化、綜合分析等項工作。這些工作在計算機中都有專門的器件來分別擔當。
1.2.1. 資訊處理裝置
計算機的輸入裝置是擔當資訊蒐集工作的器件。輸入緩衝區(佇列儲存器)和輸入暫存器是最靠近計算機核心的輸入裝置。各種各樣的資料蒐集裝置都通過輸入緩衝區和暫存器將程式資料和其他待處理的資訊送到計算機內部儲存器的。
暫存器都是暫時儲存資料的裝置。儲存器是相對較長期儲存資料的裝置。運算器藉助於暫存器對它們臨時儲存的資料進行運算(處理),將運算的結果傳輸出去,暫存在暫存器中,待機會寫入儲存器或輸出。各裝置中間的資料傳輸是通過導線來完成的。處理器可以實現對資料的轉化和綜合分析。處理器中最重要的是控制矩陣,它是計算機的大腦。控制矩陣的構成就可以用圖1-1來設計。
1.2.2. 計算機的基本結構
計算機簡單基本構成如圖 1-2所示。
(今天寫累了,先到這兒吧。圖不能貼上,是夠彆扭的。)
相關文章
- 從計算機CPU設計談P\NP問題(1)計算機
- 從計算機CPU設計談P\NP問題(2),圖靈機計算機圖靈
- 量子計算機加法運算的非確定型圖靈機例項,p=np計算機圖靈
- 從一條語句說起 談談中國的計算機程式教育問題 (轉)計算機
- 程式設計師面試常問計算機網路問題程式設計師面試計算機網路
- AI數學基礎之:P、NP、NPC問題AI
- CPU設計——CPU核解析——cv32e40p
- 《Python計算機視覺程式設計》作者Jan Erik Solem訪談問題有獎徵集(圖靈訪談)Python計算機視覺程式設計圖靈
- 計算機專業從事web前端是否有前景,老程式設計師談市場計算機Web前端程式設計師
- 漫談計算機編碼計算機
- 漫談計算機架構計算機架構
- 計算機視覺隨談計算機視覺
- 精度計算問題
- 計算機網路面試問題總結計算機網路面試
- [翻譯]高德納(Knuth)談計算機程式設計藝術(下)計算機程式設計
- [翻譯]高德納(Knuth)談計算機程式設計藝術(上)計算機程式設計
- NP-完全問題
- 【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得Server
- 漫談計算機網路:應用層 ----- 從DNS域名解析到WWW全球資訊網再到P2P應用計算機網路DNS
- 從哲學層面淺談計算機學習方法論計算機
- 計算機編碼方式雜談計算機
- MySQL 計算生日問題MySql
- 談談關於設計資料管理/治理角色的問題
- 計算機程式設計藝術計算機程式設計
- 程式設計師面試乾貨:漫談計算機網路:物理層 ----- 雙絞線&光纖?,從最底層開始瞭解計算機網路程式設計師面試計算機網路
- 【軟測試】(兩)計算機組成原理-cpu計算機
- 19歲少年重塑CPU,降低80%計算機功耗計算機
- 羽夏閒談——我與計算機計算機
- 計算機專業學習淺談計算機
- 一本好書《自己設計製作CPU和計算機》徵合著作者計算機
- 好程式設計師雲端計算教程分享Linux雲端計算面試常見問題一程式設計師Linux面試
- 好程式設計師雲端計算教程分享Linux雲端計算面試常見問題二程式設計師Linux面試
- 好程式設計師雲端計算教程分享Linux雲端計算面試常見問題三程式設計師Linux面試
- 計算機程式設計心得總結計算機程式設計
- CAD(計算機輔助設計)計算機
- 計算機網路 課程設計計算機網路
- 程式設計師的計算機配置程式設計師計算機
- 10 早期計算機如何程式設計計算機程式設計