1、單總線結構CPU
首先說一下取指令如何完成:
首先將PC的值取出,這個動作我們需要給出一個PC out的信號,控制三態門值輸出到總線,然后再由總線輸入AR中,同樣需要一個ARin的寫使能控制信號,在下一個時鍾到來時,就會將對應的PC值輸入到AR,同時PC的值要完成加1的操作,通過總線傳輸到x端,同樣需要一個Xin的控制信號,時鍾到來后,PC的值就會寫入X中,這是第一個時鍾干的事,就是將PC的值存入AR和X中。
下一個時鍾周期,我們要干什么呢?我們要通過AR來訪問內存,同時將PC的值加1,具體操作就是,給ALU的運算選擇信號+1,讓pc的值加上1送到結果Z,要想讓結果寫入Z,必須在時鍾到來后才可以,因為Z沒有寫使能,所以時鍾到來后,一定會鎖存。同時在內存處,給出讀信號,主存就可以進行相應的工作,這是第二拍。
第三拍,我們要將PC運算的結果Z的值送回PC,並且我們要把內存中對應的數據寫入到DR中。首先將Z的值送回PC,給出Zou信號,將Z的值傳輸到數據總線,再給出一個PCin,等第三個時鍾到來后,Z的值就會寫入到PC中了,然后將主存中的數據寫入到DR中,給出DRin信號,當第三個時鍾到來后,數據就寫入到DR中了。
第四個時鍾周期,需要把DR寫入到IR,我們給出DRout,將DR的值寫入到總線,再給出IRin,第四個時鍾到了后,就會把DR的值寫入到IR中。到此取指令就完成了,然后再將指令送到指令譯碼器生成操作控制信號,由時序產生器控制時序,由操作控制器產生各功能部件所需要的控制信號序列,這些都是執行指令的事了。
下面,以LOAD R0,6# 指令為例,詳細講下執行指令的具體過程,這條指令的作用是將6號存儲單元取出以后送到R0中,因為6是存在指令里邊的,所以將6從指令寄存器的地址碼部分取出,然后訪問主存,最后將對應的數據送到寄存器中,首先我們應該把6從IR中取出來,把6送入到AR中去訪存,具體操作是給出IRout信號,將6輸出到總線,送到AR的輸入端,給出ARin,當第一個時鍾到達后,就可以將6寫入到AR中,當6在AR里,下一步就給出內存讀信號,當第二個時鍾到達后,就會鎖存,內存就會開始讀,第三拍我們就將數據取出,送到DR中,需要給出DRin信號,第三個時鍾到達后,就可以將數據寫入到DR中,在第四拍時,需要將DR的值送入到R0寄存器,給出DRout信號,將DR的值輸入到總線,然后給出R0in,在第四個時鍾到達時,將DR的值寫入到R0中
,指令執行結束,現在R0中存放的就是6號單元的數據。
1、MOVE指令執行數據通路
2、ADD指令執行數據通路
3、STORE指令 數據通路
4、JMP指令數據通路