1. 指令在CPU的電路裡面究竟代表怎樣的實在
不好回答,從網上找了些,參考一下吧
最簡單的話概括,那個是CPU硬體接受指令,完成計算,輸出結果時與軟體進行交互時使用的語言,每條新的指令一般對應著一條或幾條匯編語言,編譯後對應著可以被CPU識別的機器碼。指令集的支持是硬體與軟體共同作用的結果,要想CPU支持某指令集,就要修改硬體電路,要想讓軟體支持新的指令集,就要修改程序,重新編譯。做同樣的操作,進行同樣目的的運算,可以使用不同的方法(不同的匯編語句,機器碼),SSE2優化的代碼就是程序中使用了SSE2指令集中的語句,可以被P4/K8的解碼器(現在的X86 CPU的內核都是RISC運算核心,解碼器做轉換工作)識別,進行更有效的計算,而K7 CPU不支持此代碼,就用其它方法執行這個操作,比如使用X87 FPU指令
指令集就是CPU能支持的指令的集合.理論上,設計一種CPU就需要設計這種CPU所支持的指令,如果指令不同那麼軟體就無法通用.問題在於,通常軟體的生存期比CPU長,所以在現階段設計CPU的時候,往往按照已經存在的CPU所支持的指令設計新CPU的指令系統,甚至直接把已有的某些CPU的指令列表標准化,形成一個標准指令列表,這樣以後只要支持這些指令,不同的CPU之間可以互換;而發布新CPU的時候,也需要明確的建立一個指令碼表,這種規范化的指令列表就是指令集.-----網路-配置吧,配置一切...
2. 闡述電路塊的串、並聯指令與觸點串、並聯指令的區別
ORB指令是一種獨立指令,其後不帶操作元件號,因此,ORB指令不表示觸點,可以看成專電屬路塊之間的一段連接線。如需要將多個電路塊並聯連接,應在每個並聯電路塊之後使用一個ORB指令,用這種方法編程時並聯電路塊的個數沒有限制;也可將所有要並聯的電路塊依次寫出,然後在這些電路塊的末尾集中寫出ORB的指令,但這時ORB指令最多使用7次。 將分支電路(並聯電路塊)與前面的電路串聯連接時使用ANB指令,各並聯電路塊的起點,使用LD或LDNOT指令;與ORB指令一樣,ANB指令也不帶操作元件,如需要將多個電路塊串聯連接,應在每個串聯電路塊之後使用一個ANB指令,用這種方法編程時串聯電路塊的個數沒有限制,若集中使用ANB指令,最多使用7次。
3. 計算機指令集怎麼變為邏輯電路
估計您說的計算機指令應該是匯編,那麼邏輯電路則是數字的邏輯電路。那麼總體上分析看則是如何完成一個cpu功能的邏輯電路。
那麼從簡單說來是這樣的,首先計算機指令是匯編,匯編的實際翻譯就是機器碼,那麼什麼地方存機器碼,那麼就是rom或者是硬碟。cpu先通過定址(數字電路計數器的體現),在硬碟或rom中按順序找到地址單元,從地址單元中讀出一個數,這個數就是匯編語言的指令,這個數被在數字電路中類似解碼器的東西所檢測到,解碼器則根據指令的不同使cpu某個邏輯電路有效,比如指令mov解碼後某電路導通,則把定址的計數器固定在某個特定值,也就是固定到cpu的ram的某個特定的單元,然後把相應的數放進去。而如果這個單元是特殊單元,比如這個單元是專門與cpu電平有關的,則可以通過這個指令所放進的數使cpu某些引腳產生電平的變化。
而io口的,或者說cpu的引腳的電平,也是一樣的道理,io口也對應有地址單元(不是硬碟不是內存)這里說的是cpu內部的寄存器或者說cpu內部的易失性快閃記憶體。
那麼總體看邏輯電路(宏觀看)cpu內部電路有,解碼器,計數器,ram,和較為復雜的運算電路(這里的復雜就能完成各種運算和命令,但對於cpu基本功能而言他並不是主體)。
那麼我剛才說了這些,這點只是宏觀上說說。那麼實際能見到的大量採用的是單片機,早期(電腦)cpu和單片機是一樣的東西或者說就是一個同樣的晶元,80年代後期才分開的,通過匯編語言編程可以操作單片機,理論上講實在操作cpu,網上資料很豐富,甚至能查到單片機匯編的機器碼。通過操作單片機則可以使其運算,存取指令,引腳點評的輸出,並且是集中指令集,8位cpu,既好用又好學。
而51單片機的內核已經不再收取專利費用,而是想linux一樣的免費了。通過在fpga中嵌入51內核,也就是嵌入8位cpu,則可以得到真正具體的數字邏輯電路。甚至在quartus2中altera公司應經給出了在fpga這種專門搭建數字電路的白片中如何嵌入cpu,嵌入的數量,是否嵌入某些數字處理晶元ip核。
本人也曾經嘗試過用與非門和計數器等搭建出cpu的原型,真正搭建了,發現cpu的基本的定址取指令是很容易直接做出來的,而難點在於運算單元,當然也不是很難。
反正我的意思很明確,談到邏輯電路不談硬體是不行的,因為說不通。
這也是某些人學了很多很多的編程,回到家裡想做個遙控玩具,遙控器,或者是電子表也做不出來,而他們卻很正常的在電腦上編出很龐大的游戲。這是因為他們的只是有些東西欠缺了。
同樣一個人,比如說我,弄個硬體至少做個遙控玩具,電子表是可以,但是我卻不能在電腦上編寫出像紙牌這樣的小游戲,甚至不能理解linux是如何控制硬體的,也無法理解嵌入linux時候寫驅動的那些函數是如何操作arm晶元的,但是向我們這類人卻能在沒有操作系統的情況下,讓cpu晶元裸奔實現功能。說明了兩種人都欠缺了相關知識。
如果真的向更為深入的知曉他,那麼則應該軟體也學硬體也學。
最最現實的是,比如市場上有賣內存條的,他說自己的是ddr2的,非常好,ddr是個什麼?
買了個SD卡,買個索尼記憶棒,都拆開,你看裡面又是什麼。
答案,ddr是時鍾上升沿下降沿都對內存進行讀寫,而不是ddr的則是一個時鍾只能完成一次讀寫。
兩種卡拆開了都是個rom,是個nandflash晶元。網上還能找到說明書,並且有實力的人還能對其進行操作。
我說完了!
4. 電路為什麼可以編寫指令
可能是邏輯電路吧
5. 電路快與電快並聯採用什麼指令
串聯電路塊的並聯連接指令是ORB.
並聯電路塊的串聯連接指令是ANB.
6. 程序和電路的關系
1、電路編程(設計)與軟體編程的區別表面上看只是一個圖形形式,一個是文字形式;但實質上有很大的不同。
2、計算機編程實際上是「按步驟解決問題」:把解決問題的方法分成若乾的大步驟,每個大步驟又分為若干個小步驟,一直分下去,直到分不可分;然後計算機就按照步驟來一絲不苟的執行。這種「按步驟解決問題」的思路很利於執行。
3、與計算機編程不同,電路是連續工作的,沒有「步驟」一說。數據(電流或電壓)持續的流入一個器件,經過一個器件加工後,又流出這個器件。例如放大器,會只要通電,就會持續不斷的對輸入信號放大,在工作范圍內,輸出信號一直與輸入信號成正比或反比。數字電路同樣如此,例如二輸入與門,其輸出信號時時刻刻是兩個輸入信號的與。即使有時鍾參與的時序數字電路,可認為時鍾也是一個輸入信號,同樣脫離不了上述規律。即使不把時鍾當作輸入信號,時序電路也沒有「步驟」,只是信號處理不再是連續的,而是離散的而已。
4、綜上所述,計算機編程關注的是解決問題的步驟。如果步驟太多(程序規模較大),則編程時很容膝疏忽某些步驟,造成程序隱含的BUG。而電路設計關注的是數據流動,每個器件都對數據進行特定的處理,數據按照指定的方式路徑流過這些器件後,自然就解決了要解決的問題。因此,電路的行為比計算機編程更容易預測,更容易理解,也就更不容易出錯。計算機領域中,硬體發展的速度遠高於軟體發展的速度就很好的證明了這一點。
7. 電路里用什麼結構來區分CPU里數據和指令
在計算機中cpu如何區分指令和數據
在計算機中cpu如何區分指令和數據
8. 機器指令是怎樣實現的,從電路的角度講
信息被定義,信息被2進制格式表達,信息處理之後的格式也被定義,同樣按確定的約定被2進製表達,兩個二進制通過一系列布爾代數運算實現,從而實現了邏輯層面的信息處理;處理器是進行布爾代數運算的,布爾運算都可以通過加減法,和位移來實現,加法有加法的加法器,位移有位移寄存器,這些電路都是確定的,也是基礎的,在這之上處理器被發展的更先進,計算功能更突出。取出指令輸出指令的過程一般是位移過程,頂多有一些與非的處理,現在有一種;理論說最基本的運算就是與和非兩種,同時還取出數據過程是一樣的,電路應該就是並口使能讀取的過程,放在寄存器里,所謂寄存器應該是存儲記憶電路,並同時進行地址計算管理的處理,具體執行過程是之前信息定義的時候二進制轉換時定義的那系列約定所確定的邏輯運算,這部分運算成為指令,每種指令都代表一種處理運算或者組合,並有時間序列配合之前的數據使能控制不同功能的電路加減法、位移啊等運算單元電路在同一時鍾的步調下處理並把結果輸出,或者在存於寄存器中,這樣一切都在一個確定的自動化的一體化的電路里,一層處理電路被定義並把介面提供給更高級的電路,以此類推,逐步接近信息處理的人類語言,但是基礎的那些基本指令是硬體提供給信息運算的前提,同時也是硬體功能的完本的外部介面。這些指令在電腦上的軟體支持下以文字信息的形式反映,在電腦里以二進制編碼固化到系統的底層,在處理器上以硬體形式體現。
9. 並聯電路塊與前面的電路串聯時應該使用什麼指令
兩個電阻r1、r2串聯於抄電壓為v的電路中,則:
電流i=v/(r1+r2)
電阻1兩端的電壓:v1=ir1=vr1/(r1+r2)
電阻2兩端的電壓:v1=ir2=vr2/(r1+r2)
所以:v=v1+v2
所以稱串電阻電路為分壓電路。
兩個電阻r1、r2並聯於電流為i的電路中,則:
總電阻r=r1r2/(r1+r2)
總電壓v=ir1r2/(r1+r2)
電阻1兩端的電流:i1=v/r1=ir2/(r1+r2)
電阻2兩端的電流:i2=v/r2=ir1/(r1+r2)
所以:i=i1+i2
所以稱並聯電阻電路為分流電路