從計算機CPU設計談P\NP問題(1)
公共匯流排與狀態線和控制線不同。一般來說,狀態線和控制線只有0和1狀態,它們將資料只是單向的輸送。而做為公共線路的匯流排BUS,一般要具有三態,即0狀態、1狀態和高阻狀態(即是斷開)。如此,公共匯流排可以雙向傳遞訊號。公共匯流排上傳遞訊號是廣播式的,在相同時間段內只能有一個器件將資訊傳到匯流排上,其他器件只能接收,不然也會造成資訊混亂。
1. 狀態線和控制線
從圖1-2我們看到,控制線資訊要由控制器向其他裝置傳遞。裝置狀態標誌線要將狀態資訊傳遞到控制器。匯流排BUS上可以來回傳遞資料。圖中畫出的導線都代表多條。器件狀態標誌線我們只考慮了累加器da的資料是否為0和是否為負數的狀態,其他裝置的狀態暫時不用,因而也就沒有畫出來。比如,運算器ALU可能產生結果溢位,這條狀態線在圖1-1的表中有,而我們在此並未畫出。裝置的狀態線是不是都要考慮,這與我們設計計算機CPU的需要有關。譬如,在多個處理器的情況下,大家公用的裝置,需要互斥使用,那就要設定裝置忙閒標誌,一個處理器就可以不加考慮。
2. 必不可少的時鐘節拍
對於可控裝置來說,需要使用它們的狀態變換完成特定的功能,與之配套的控制線是不可缺少的。控制線有步驟地發出不同的控制資料,這樣就可以讓不同的裝置相互配合。要使它們配合步調一致,就必須有時鐘訊號來統一。圖1-2中雖然沒提到時鐘訊號和初始化訊號,但我們要明白,沒有這兩個重要訊號的統一管理,計算機根本就不能完成程式執行的過程。
由於時鐘是高速的脈衝訊號。一般地說,計算機主要時脈頻率越高,計算機執行的速度越快。但是裝置的狀態變換速度不都能跟上時鐘的高頻,對於一臺計算機來說,要做到裝置器件能夠整齊劃一的配合,必須考慮共同能夠完成動作的時間。於是這才有了節拍器這種時間控制裝置。圖1-2畫的是簡圖,更詳細的組成結構,一定要在具體的時間中才能體現出來。
3. 計算機資訊處理基本過程
針對圖1-1的控制真值表和圖1-2的結構,我們來介紹一下計算機資訊處理的基本過程。
1) 系統初始化
計算機加電之後對所有的器件都要設定一個初始狀態,這一過程就叫系統初始化。我們設計的系統初始化訊號往往是低電位有效,也就是讓這種訊號在計算機執行時保持高電位,而是在啟動的一瞬間給一個極短的低電位脈衝,讓這個訊號從高電位變到低電位的瞬間有效。這叫後沿控制。初始化的過程不是用各個器件執行中的控制訊號確定的,而是統一用初始化訊號來確定的。
系統初始化之後,每個器件的狀態訊號就會確定下來,通過狀態線傳遞到控制矩陣。就是預先設定了圖1-1中表的各項狀態線的值。
2) 節拍器啟動與指示節拍
節拍器是一種叫做環行計數器的器件。節拍器在系統初始化時,將一個暫存器的一位值設定為1,其他各位都設定成0。此後,它是在時鐘脈衝上升沿的時刻,將預先由初始化設定好的“1”沿著環行計數器的每一位向一個方向移動,“1”就如同鐘錶的指標在環行計數器中順時針或逆時針方向移動。每一次移動都是一個等時的節拍,並將每個節拍將“1”從前一條導線傳遞給相鄰的後面導線,其餘的導線都變成“0”值。節拍器能夠迴圈地標識極短時間段的順序,每一個節拍佔用的時間長度相同。實際上節拍器是一種在指令執行時記錄時間長度的計時器。
3) 節拍線、狀態線和控制線的關係**
計算機的節拍線是直接由時鐘來驅動的,而時鐘是一種石英振盪器,加電之後就發出固定頻率的脈衝訊號,而且一直會震盪下去。雖然石英振盪器會不停地震盪,但我們可以設法控制節拍器的狀態,可以設計邏輯電路控制節拍器的輸出,讓節拍器的所有節拍線的值都為0,這樣就會使節拍器對系統失去驅動作用,也就是能夠停止計算機的執行。
初始化之後的狀態和節拍值的變化,如果能夠去控制組成裝置去按照需要變化,那麼就可以用裝置的不同狀態變化來實現某種功能。這種思想是計算機設計最關鍵的一環。
例如,圖1-2的計算機結構,每個暫存器都有輸入輸出控制線,儲存器有選址控制線和輸入輸出控制線,運算器alu具有瞬間運算功能,同時也有輸出控制線,那麼我們就可以用狀態線和節拍線的變化,按步驟實現運算。
以圖1-1中表的解釋欄“編號”為6號開始的行,可以讓指令儲存器的地址發生轉移。在此之前有0、1、2三個節拍,分步將程式計數器pc確定的儲存單元的值送到了暫存器ir。如果我們要改變程式儲存器的儲存單元地址,可以將改變的地址寫在那個儲存單元,在4號節拍將ir的值傳送到pc,那麼就可以改變下一個指令儲存器的地址。
- 表中程式計數器pc有加1控制線inc、輸入控制線pcw、輸出控制線pco;
- 指令儲存器有地址輸入控制線im、寫控制線iw、讀控制線io;
- 狀態線zf、nf、ov中ov的值影響pc輸入控制線和指令暫存器ir的輸出控制線的變化。
將這些控制線的值依據節拍和狀態變化填寫好,那麼就可以實現“當標誌線ov=1的時候,指令儲存器的地址就可以實現轉移”這個功能。我們將這個功能給個二進位制編碼“000110”就可以代表它,從而實現了指令的二進位制編碼形式。這就實現了計算機指令的二進位制數表示,並且對應了電路的導線數量。
總結一下,初始由節拍線和裝置狀態線來決定每一條控制線,而控制線的值立即在時鐘上升沿(從0變到1的時刻)使裝置的控制線發生了變化,這樣在自動轉移的下一個節拍,又有新的狀態線值決定新的控制線值,如此就可以確定新的狀態。如此不斷地迴圈往復,組合起來就可以完成由裝置構成確定的各種功能。
以上詳細設計問題可參考《自己設計製作CPU與微控制器》一書的中篇內容。
2014-11-1晚 (待續)
相關文章
- 從計算機CPU設計談P\NP問題(0)計算機
- 從計算機CPU設計談P\NP問題(2),圖靈機計算機圖靈
- 量子計算機加法運算的非確定型圖靈機例項,p=np計算機圖靈
- 從一條語句說起 談談中國的計算機程式教育問題 (轉)計算機
- 程式設計師面試常問計算機網路問題程式設計師面試計算機網路
- AI數學基礎之:P、NP、NPC問題AI
- CPU設計——CPU核解析——cv32e40p
- 《Python計算機視覺程式設計》作者Jan Erik Solem訪談問題有獎徵集(圖靈訪談)Python計算機視覺程式設計圖靈
- 計算機專業從事web前端是否有前景,老程式設計師談市場計算機Web前端程式設計師
- 【1】Embarrassingly Parallel(易平行計算問題)Parallel
- 漫談計算機編碼計算機
- 漫談計算機架構計算機架構
- 計算機視覺隨談計算機視覺
- 精度計算問題
- NP-完全問題
- 計算機網路面試問題總結計算機網路面試
- [翻譯]高德納(Knuth)談計算機程式設計藝術(下)計算機程式設計
- [翻譯]高德納(Knuth)談計算機程式設計藝術(上)計算機程式設計
- 【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得Server
- 計算機模型與體系架構的發展——從圖靈機到雲端計算機1薦計算機模型架構圖靈
- 漫談計算機網路:應用層 ----- 從DNS域名解析到WWW全球資訊網再到P2P應用計算機網路DNS
- 從Foursquare看手機端程式設計(1)程式設計
- 從哲學層面淺談計算機學習方法論計算機
- 計算機編碼方式雜談計算機
- 專家審讀——《計算機程式設計藝術,卷1》計算機程式設計
- MySQL 計算生日問題MySql
- 談談關於設計資料管理/治理角色的問題
- 計算機程式設計藝術計算機程式設計
- 《自動機理論、語言和計算導論》閱讀筆記:p1-p4筆記
- 第1章 計算機網路的概述——計算機網路計算機網路
- 程式設計師面試乾貨:漫談計算機網路:物理層 ----- 雙絞線&光纖?,從最底層開始瞭解計算機網路程式設計師面試計算機網路
- 【軟測試】(兩)計算機組成原理-cpu計算機
- 19歲少年重塑CPU,降低80%計算機功耗計算機
- 《計算機程式設計藝術 卷1》出版進度備忘計算機程式設計
- 【MyBatis】1:JDBC程式設計存在的問題MyBatisJDBCC程式程式設計
- 羽夏閒談——我與計算機計算機
- 計算機專業學習淺談計算機
- 一本好書《自己設計製作CPU和計算機》徵合著作者計算機