-
1 # gregorylong
-
2 # 若無所思巖褚
計算的本質是圖靈運算,計算機是一種圖靈機。編譯原理,邏輯運算都是在這個基礎上執行的。
圖靈機簡單講就是要讓計算機能在一堆01程式碼中識別出哪些是操作,哪些是資料
-
3 # 哼哼online
計算機不能直接識別程式語言,即便是組合語言也不能直接識別。
組合語言與機器指令一一對應,但是我們說的彙編都是透過助記符程式設計,要彙編成二進位制程式碼後才可以被計算機識別。計算機只認識010101組成的計算機指令程式碼。
高階語言,C語言、java、Python等都是不能被直接識別的,需要編譯系統編譯成機器指令,也就是二進位制程式碼才可以被識別和執行。高階語言有大量的支援庫,這些支援庫一般都是C語言為代表的高階語言寫成的,編譯成二進位制程式碼後備用。
高階語言的編譯器的工作是將人類易識別、理解的計算機語言翻譯成計算機能識別的機器程式碼,並透過link程式將你編寫的程式碼和支援庫組成一個完整的執行程式。
編譯系統就是個翻譯官,最早的編譯器肯定也是組合語言寫成,現在一般都是C語言為主導寫成,就是滾雪球,從最早的簡單的語言迭代發展成現在的眾多高階語言。
高階語言分兩大類,解釋型和編譯型。解釋性的一邊編譯一邊執行,自帶基礎支援庫,速度慢,但是門檻略低。
編譯型的編譯後需要連結(link),一邊將支援庫程式碼或者呼叫入口納入執行程式碼。
CPU就是一些數位電路組合,很傻只能進行極為簡單的邏輯運算,但是速度賊快,可以達到納秒級;當然為了提高速度設計出各種CPU結構和指令體現,基本的原理都是數字邏輯運算。現在的X86體系源自60年代,發展到現在已經是非常複雜臃腫,指令豐富到一般人無法掌握使用,我們現在只能透過高階語言和開發套件才能使用到那些指令。X86的複雜度降低了CPU的效率,增加了CPU設計、製造的難度,蘋果公司的M1以極少的電晶體數量和極低的功耗獲得了極高的執行速度就是個例證,當然蘋果M1的主CPU本身功能一般,高速度的功勞是輔助功能模組的接入,也就是n年前說的協處理器。
90年代有科技大佬預測未來的計算機發展會出現大量的輔助處理器,結果被wintel簡單粗暴的單一CPU+windows組合替代,現在的蘋果給出了新思路,為未來的AI、VR等技術帶來希望 -
4 # 日衝資訊 黃
您一定用過算盤吧,其實,計算機的工作原理跟算盤差不多,也可以說算盤是一種機械計算機。下面就借算盤給您解釋一下計算機的工作原理。
算盤上的算珠就相當於計算機的暫存器,每個算珠有兩種狀態,初始位置和被撥上去,這可以對應計算機每個數位的0和1。使用算盤做加法時,先撥動算珠寫入第一個資料,再撥動算珠寫入第二個資料,按照規則這個數被累加到第一個數上了。用計算機術語說,算盤的撥動規則就是CPU(中央處理器)的運算規則,一次算盤操作,就相當於CPU從暫存器裡讀取兩個數把它們相加的結果寫到暫存器裡。
當然了算盤是全手動的,想連續計算就得不斷撥算珠。計算機裡有一個時鐘,每隔一段時間,就自動運算一次。這個時鐘的頻率,就是CPU的主頻。有了這個時鐘計算機就可以自動地完成一系列的運算了。為了讓計算機能連續完成運算,我們得寫好撥算珠的步驟(撥上、撥下、進位之類),這樣計算機在時鐘的驅動下就可以一步一步完成設計好的操作。這樣的步驟就是組合語言了。組合語言寫的是操作暫存器的步驟,一般人很難看懂。人們希望寫一句“1+1=?”計算機就能完成加法計算,於是有人就設計出了比較接近這樣的語言的高階語言,比如,C語言。先把C語言程式翻譯成組合語言(機器語言),就可以讓計算機按照人的指示進行工作了。
用算盤做加減法是很方便的,但乘法除法這些就比較困難了。CPU要比算盤複雜得多,做四則運算都不是事兒。比如,做除法只需幾次移位操作就可以(二進位制向右移位是除二,向左移位是乘二)。還可以做邏輯運算,比如,兩個都是真結果就是真,有一個假結果就是假之類。這些就是數位電路中與非門的原理了。比如,兩個串聯在一起的開關,斷開了一個線路就會斷,這就是與門。
計算機原理大致就是這些了。原理上挺簡單的,我曾經試著用幾十個繼電器做CPU,結果沒有成功,因為,繼電器的時間響應太慢了,這個龐大的CPU要麼卡殼,要麼停不下來,一次都沒有成功。說這件事就是想幫助您理解計算機的原理跟算盤原理是大同小異的,計算機並不神秘。當然了要把它做得很快需要很多高技術的加工工藝了。
回覆列表
數字系統自動化設計-》cpu
編譯器設計-》高階語言轉匯編
編譯器設計和cpu設計相互影響