為什麼計算機里加上存儲功能可以代替改變電路?

我們都知道計算機工作原理實際上是通過電路來計算的,於是就可以通過改變電路來設計不同的計算任務,完成不同類型的計算,這樣的話就可以設計好多原子電路,需要的時候就把這些原子電路臨時組裝在一起,就像ENIAC。但是這種方式太麻煩了所以從馮諾依曼開始提出用存儲的方式,即通過某種命令(電信號)來控制計算機,這種命令不是臨時輸入計算機的而是存放在某個地方,隨時可以修改,當想要計算機實現新的功能的時候不需要重新組裝電路而是改變命令就可以了,就像EDVAC。

那麼為什麼有了存儲功能就可以替代改變電路的方式了呢?是因為計算機內集成了許多不同的電路,需要時就從中選擇某個或某幾個電路進行使用嗎(通過1和0)?


麻煩您去搜索下: FPGA


是因為數字電路的發展,數字電路中有一種用電控制的開關,高電平接通,低電平阻斷,就跟一個可以撥的開關一樣。實際上匯流排結構就是將很多個這樣的數字開關接到一根線上,原理跟以前接線一樣,只不過用電信號來控制這些開關的通斷。

這些開關的不同控制信號導致了不同的運行結果,而這些運行結果進一步成為以後的開關狀態的控制信號,這個不斷循環的過程就叫做程序,有了程序之後,使用計算機的人就只要輸入預先設計好的程序,就可以讓計算機不斷持續運行直到輸出結果了。


這就是CPU指令啊


做這麼一個控制電路:以一定頻率,重複從儲存器讀取一條指令,然後改變一些狀態內容,如接著該讀哪一條指令、儲存器的內容,一些埠的電位等。

然後一個看起來貌似可以用的處理器就做完了。

這麼一個處理器看起來非常萬能,它真的是可行的?是的,而且就在電腦里運行著呢。

怎麼解釋呢?比如有些編程語言有解釋器,可以讀入代碼執行;而處理器完全可以以類似的方式讀入指令執行。


雕版印刷時代,一本書就對應一堆板子,就好比弄個電路,只解決一個問題

活板印刷時代,是用很多單獨的字,根據書的內容臨時拼成板子印刷,對不同的問題,通過組合來做,就好比你弄了很多單元電路,通過組裝形成一個機器

電子列印時代,只有一個NxM像素陣列的針組合,或噴頭,根據輸入的內容,變換不同的方式來形成不同的單個字的輸出,反覆循環完成一本書的列印,就好比通用計算機,只需要簡單的硬體定義和電路實現,通過一個循環來執行一個機械化指令序列,最終達到解決一個問題的目的

軟體解決問題的確沒有硬體快,但成本低


如果你已經設計好了一個個水流通路,

並在這些通路上安裝了一個個的閘門。

閘門上有兩種控制開關,

一種是閥門閉合開關,

一種是姿勢控制開關。

閉合開關控制水流能不能通過。

控制開關控制水流以怎樣的姿勢通過。

現在你只需要在同一個時間段內打開且僅打開一段暢通的通路,並保持至這段時間結束,那麼水流就能夠自動從一端流到另一端。

事實上姿勢控制開關也是由一個個的小閥門組成的,這些小閥門所在的通路是大閥門的支流。

所以你現在只需要按順序儲存這些閘門開關的鑰匙,並在不同時段拿出不同的鑰匙打開不同的閘門保證水流暢通。

這些閘門的實際開關是信息——兩種對立狀態以及,對立狀態的組合,並最終導致了一種對立狀態的轉換,也就是所謂邏輯門。

震蕩電路的發現以及研究使得自動化成為可能。集成電路的發展使得大規模的電路佔有的空間實際上變得很小很小。

當我們鑿好了路,也就不必繼續關心路是怎麼鑿的了,只需要關心道路上門的閉合控制。


是不是題目改過了啊,我覺得因為存儲本身就是改變電路的一種行為啊。存儲的東西變了,對應的就是輸入改變,那麼不同的輸入對應不同的輸出,是一件很正常的事情啊。


謝邀,感謝題主邀請我回答這個問題。好久沒寫長回答了,哈哈。

說實話機械硬碟我沒研究過,但是大家都知道U盤吧,現在大多數U盤(also SSD)儲存數據的原理就是使用場效應管(又叫MOS管)和浮柵的組合。

什麼是場效應管?就是一個電壓控制的三極體,學過電路分析的人應該知道控制源這個概念吧。場效應管就是一個電壓控制電流的控制源模型。

什麼是浮柵?就是在場效應管的控制極和源極漏極之間加的一個用於存放電子的區域。在這個區域,電子可以長期存在。

在快閃記憶體的場效應管中,控制的那一極叫位線。八個場管一組,所有場管的漏極加上電壓(看情況電壓值可能會不一樣),此時因為位線沒有電壓而不導通。此時這個場管存儲的數據就是0。

而當你給位線通電時,位線的電流到達源極的時候,會因為熱電子注入效應(好像還有一種效應,記不得了)而向浮柵中填入電子。這個過程叫做編程。編程結束之後位線就斷電。

相反的操作叫做擦除。

當你過度注入電子時,會使浮柵失去被擦除的能力。這個叫過度編程,也叫過編程。

同理叫過擦除。

然後因為你注入了電子,因為電磁感應原理,

漏極和源極導通,漏極的電流就流到源極。這種情況下,場管存儲的數據叫做1。

而由於電子長期存在,加上場管是電壓控制,位線在沒電的情況下因為浮柵中電子的存在,一直是導通狀態。

所以就達到了存儲數據的目的啦~

一個快閃記憶體模塊還分組的,8個一組,然後好像還有更大的,記不得了。。。。

然後還分地址區和數據區。。學C的是不是想到指針了呀。。


唉唉唉,原來我回答了這麼多沒有審題清楚。也不刪除了。

「1.那麼為什麼有了存儲功能就可以替代改變電路的方式了呢?2.是因為計算機內設置了許多不同的電路,需要某個電路的話就從中選擇某個獲某幾個電路進行使用嗎?」

答1,因為計算機內部硬體已經集成了很多的運算處理電路。計算機內部電路和CPU還有一個另外的名字叫:大規模集成電路或者超大規模集成電路。不信就去搜索一下「超大規模集成電路」(?????)っ

CPU里的各個小規模里再小規模電路等等完成的電路工作取名叫指令。

既然需要它自動執行某個電路,那麼你就需要把操作這個電路的指令和數據放在某個地方,就像你的靈魂在你的身體里一樣(? ??_??)?,需要的時候調用它。而不是重新搭建一個活人。

意思是把你寫好的 需要的某些電路指令(或者叫程序)存儲在磁碟或者其他存儲功能的物質上,在需要的時候調用。如果沒有存儲器,想像一下吧,你這人就是那個存儲設備。

答2,是的。是通過代表1和0的高電平和低電平。比如CPU內置的電路叫指令集,需要某個電路工作的話,你就寫個程序指令去計算機內部申請使用。

計算機的CPU有兩種指令集,複雜指令集和精簡指令集,基本上可以應付目前人類的大部分工作。至於說還有,我們期待科學家們的工作了。

這跟我這個普通的搬磚工關係太遠︶︿︶

下面是我沒審題回答的╮(╯▽╰)╭

-----

我知道題主你想了解的是哪個方面。

其實很簡單,計算機通電開始運作,它的工作實際上是在【做流水線循環運行工作】。

操作系統在每時每刻(這樣說就太絕對了)都在循環檢測各個通信介面的信號,如果沒有就是處於閑時,如果路過某個介面發現有個介面處於活動狀態,立刻中斷當前任務,處理活動請求。

就像在工廠流水線上一樣,只不過是這條流水線以電在半導體中運行的速度進行工作,也就是說,有頻率,比如赫茲;有時間,多少或者幾分之一毫秒流水線上轉一圈。

比如在操作系統閑時System Idle Process,移動滑鼠,產生一個信號,被操作系統捕獲,然後響應你的滑鼠指針,並反應到屏幕上。你可以理解為系統捕獲有多少延遲,只是人感覺不到。


因為存儲器讓信號/數據可以等啊,這就可以復用『原子』電路,用時間換取電路的複雜度。所以在低時延系統中,做法往往是反向的。


物理

電路原理

模擬電路

數字電路

C語言從入門到看開

微機原理與介面

單片機原理與應用

嵌入式系統原理及應用教程

嵌入式設計及linux驅動開發指南

脫髮防治

題主請。


占坑,有空回答一波


把重複的東西提出來,只用一份副本


從另外的角度來看的話,存儲這個動作實質上是實現了一個延時的功能。

設想假如沒有存儲,計算機執行了一個指令,然後呢?停了。但是有了存儲的話,當計算機執行完一遍指令後,設置一個跳轉指令讓它跳到存儲單元的某個位置,計算機一看,哎呀巧了,這裡害有一堆指令,然後繼續執行,這樣就能不斷地執行指令集。

所以說重組原子電路和用高低電平控制電路結構,本質上都是在讓電路變變變而執行不同指令,而有了存儲就相當於把人工重組原子電路的一系列操作持久化,那麼不改變人工重組電路的方式而又想做到這種持久化顯然是困難的,但是把代表高低電平的01信號存儲下來就要容易的多。


你的理解基本正確。cpu上做算術運算的單元叫做alu,它接收兩種輸入向量:(兩個)操作數,以及指定功能的碼字。比如說,我有兩個操作數3和4,然後對於這個單元來說,6代表要使用加法功能,所以一個用來指定功能的數字「6」就讓這個單元選擇了內部的加法電路來進行操作。細節可以參考《數字設計:原理與實踐》和《深入理解計算機系統》前四章。


推薦閱讀:

為什麼開源軟體絕大部分都是C語言寫的,而商業軟體大多數是C++開發的?
成為一個優秀的程序員,一定要精通C/C++嗎?
如今存在用機器語言編寫出的程序么?
你工作中最推薦的 C/C++ 程序庫有哪些,為什麼?
ACM 怎麼樣零基礎到入門?

TAG:計算機 | 信息技術IT | C編程語言 | 電路 | 單片機 |