在上節的課程中講到,儲存器被劃分成多個儲存單元,儲存單元從零開始順序編號。這些編號,可以看做是在儲存器中的位址。就像一條街,每個房子都有門牌號。
cpu要從記憶體中讀取資料,首先要指定儲存單元的位址。也就是說,它要先確定它要讀取哪乙個儲存單元中的資料。就像在一條街上找人,先要確定他住在哪個房子裡。
另外,在一台微機中,不只是有儲存器這一種器件。cpu在讀寫資料時,還要指明它要對哪乙個器件進行操作。進行哪種操作?是從中讀出資料?還是向裡面寫入資料?
可見,cpu要想進行資料的讀寫,必須和外部器件(標準的說法是晶元)進行下面3類資訊的互動:
(1)儲存單元的位址(位址資訊);
(2)器件的選擇,讀或寫的命令(控制資訊);
(3)讀或寫的資料(資料資訊)。
那麼cpu是通過什麼將位址,資料、控制資訊傳到儲存器晶元中的呢?電子計算機能處理、傳輸的資訊都是電訊號,電訊號當然要用導線傳送。
在計算機中專門有連線cpu和其他晶元的導線,通常稱為匯流排。匯流排從物理上來講,就是一根根的導線集合。根據傳送資訊的不同,匯流排從邏輯上又分為3類:
(1)位址匯流排
(2)控制匯流排
(3)資料匯流排
cpu從3號單元中讀取資料的過程,如下圖:
(1)cpu通過位址線將位址資訊3發出。
(2)cpu通過控制線發出記憶體讀命令,選中儲存器晶元。並通知它,將要從中讀取資料。
(3)儲存器將3號單元中的資料8通過資料線送入cpu。
寫操作與讀操作的步驟相似。如向3號單元寫入資料26。
(1)cpu通過位址線將位址資訊3發出。
(2)cpu通過控制線發出記憶體寫命令,選中儲存器晶元。並通知它,要向其中寫入資料。
(3)cpu通過資料線將資料26送入到記憶體的3號單元中。
從上面我們知道了cpu是如何進行資料讀寫的。可是,如何命令計算機進行資料的讀寫呢?
要讓乙個計算機或微處理器工作,應向它輸入能夠驅動它進行工作的電平資訊(機器碼)。
對於8086cpu,下面的機器碼,能夠完成從3號單元讀資料。
機器碼:101000010000001100000000
含義:從3號單元讀取資料送入暫存器ax
cpu接收這條機器碼後,將會完成我們上面所述的讀寫工作。
機器碼難於記憶,用彙編指令表示,情況如下。
機器碼:101000010000001100000000
對應的彙編指令:mov ax,[3]
含義:傳送3號單元的內容到ax
問:儲存器被劃分成多個儲存單元,還可以怎麼表示了?
答:一棟大樓,修建了很多房間。這些房間相當於一棟大樓,被劃分成多個房間。
問:控制資訊,你認為可以怎麼表示?
答:cpu打**給住戶,告訴住戶,將要從中讀取資料或者寫入資料。
問:對於資料線,它可以怎麼表示?
答:通過資料線,對住戶進行讀取資料或者寫入資料。
問:
為什麼讓乙個計算機工作,要輸入能夠驅動它進行工作的電平資訊?
答:目前的計算機只能識別二進位制,如果是其他的東西,則無法識別。
問:可以解決這種只能識別二進位制的計算機嗎?
答:當然可以,按照我的猜想,三進製計算機或許能解決。二進位制計算機已經停留了很長的時間,是時候向三進製進發了。
CPU怎樣對儲存器們進行讀寫?
在了解了計算機中的儲存器之後,緊接著我們會有一些問題 cpu是怎樣去訪問記憶體位址空間的某乙個位址的呢?接下來會以8086cpu架構作為例子來進行介紹 8086是老古董了,現代的cpu有i5架構的,還有i7架構的 之所以選擇8086是因為它結構比較簡單,適合上手,通過它學習到的概念,同樣可以對其他c...
作業系統中儲存器管理及CPU對儲存器的訪問
在做uboot移植的時候對 的重定向產生乙個疑問,不理解為什麼把uboot讀到以鏈結位址作為起始位址的sdarm記憶體空間。對鏈結位址 虛擬位址 實體地址也傻傻分不清,後來學習計算機組成原理中的虛擬儲存器時了解到虛位址 邏輯位址 實位址 實體地址 以後我就認為鏈結位址就是虛擬位址。在學習了作業系統中...
儲存器與CPU的連線
din和 dout 引腳連起來,再和cpu的一根資料線相連。6 位址線的連線及儲存晶元片選訊號的產生 乙個儲存器系統通常需要若干個儲存晶元。為了能正確實現定址,一般的做法是,將cpu或系統的一部分位址線 通常是低位位址線,位數取決於儲存晶元的容量 連到所有儲存晶元,以進行片內定址 儲存晶元內均設有位...