1. 程式人生 > 其它 >計算機組成原理之記憶體資料的組織格式

計算機組成原理之記憶體資料的組織格式

1、儲存字長

儲存字長:儲存單元中的二進位制程式碼(儲存字)位數,儲存字長可以是8位、16位、32位等。

早期計算機的儲存字長一般和機器的指令字長與資料字長相等,故訪問一次主存便可取一條指令或一個數據。隨著計算機的應用範圍的不斷擴大,解題精度的不斷提高,往往要求指令字長是可變的,資料字長也要求可變。為了適應指令和資料字長的可變性,其長度不由儲存字長來確定,而由位元組的個數來表示。1個位元組(Byte)被定義為由8位(Bit)二進位制程式碼組成。

因為一個32位的字佔據的是4個位元組。

2、資料儲存和邊界的關係

從上面可以看到在32位的作業系統中,連續的4個位元組放在一起,表示的是32位作業系統。

按照邊界對齊的意思就是在連續的四個位元組中,找到能夠放得下當前的位元組數的。如果放不下,就另起一行來存放當前資料。

對於i、k、x、c和j來取地址,獲取得到的都是連續存放的位元組的首地址記憶體單元編號。比如說i佔據的是連續的四個位元組,在對其進行取地址操作之後,返回的只是連續4個位元組的第一個位元組的地址編號。

從這種方式上來說,可以看到有三個位元組的資料沒有被利用。

3、未按照邊界對其的資料儲存

在這種方式中,值需要找到能夠進行儲存的對應的即可。但是對於作業系統來說,CPU和記憶體之間的互動次數又會增加。

這種方式下會以效能來換取空間的方式。上面的方式是互動兩次,而現在這種方式會互動三次。

4、資料儲存和邊界的關係

因為雙字長類似double這種資料型別,單字長的類似int這種資料型別,對於半字長邊界對齊的類似char這種資料型別,

但是對於半位元組的資料儲存來說,要是想儲存的是1這個數字,計算機中的其實地址的最後一位不應該是1嗎?

在對齊情況下,對於s1來說,佔用的是12個位元組;但是對於s2來說,佔用的是9個位元組。這種採用對其的是否效率高呢?

看看右邊的圖,如果要是以陣列的方式存在,從右邊圖中可以看到,對於d[1]和d[2]來說,每個結構體結點都將會浪費3個位元組,這種效果也是不好的。

5、大端和小端

最高位元組地址和最低位元組地址的劃分?

相當於一個是倒過來進行儲存,一個是正著來進行儲存。

6、大端和小端的儲存方式

這種也只是一種程式設計的方式。

千里之行,始於足下。不積跬步,無以至千里