1. 程式人生 > >第五章-儲存器管理

第五章-儲存器管理

第五章  儲存器管理

一.儲存器分類

1.儲存器組織結構

儲存器系統的組織結構按作用可以劃分為4級:暫存器、cache、主儲存器和輔助儲存器,對於簡單的嵌入式系統來說,沒有必要把儲存器系統設計成4級,最簡單的只需暫存器和主儲存器即可。


儲存器作用:


1)        暫存器包含在微處理器內部,用於指令執行時的資料存放,如:R0,R15等。

2)        Cache是快取記憶體。主儲存器是程式執行程式碼及資料的存放區,通常採用SDRAM型別的儲存晶片。

3)        輔助儲存器通常是Flash型別的晶片,作用類似通用計算機中的外存。

儲存器單元識別

主儲存器和輔助儲存器內部的儲存單元靠地址

來識別,儲存器晶片收到的n位地址訊號就選定一個具體的儲存單元。儲存器晶片通常還需一根使能訊號引腳,它控制著儲存器晶片資料引腳的三態。另外,還需讀/寫控制訊號引腳,它們控制著儲存器的資料傳送方向。

2.隨機儲存器和只讀儲存器

儲存器根據其存取方式分成兩類:隨機儲存器(RAM)和只讀儲存器(ROM)。

RAM是易失性儲存器,ROM是非易失性儲存器。

(1)隨機儲存器——易失性

    隨機儲存器又分為兩大類:

    ·靜態隨機儲存器(SRAM)

·動態隨機儲存器(DRAM)

SRAM與DRAM的區別:

1)      SRAM讀/寫速度比DRAM快。

2)      SRAM比DRAM功耗大。

3)      DRAM整合度高,因而儲存容量更大。

4)      DRAM需要週期性的重新整理,而SRAM不需要。

CPU與SRAM、DRAM的介面區別:


SRAM中的儲存單元內容在通電狀態下是始終不會丟失的,因而,其儲存單元不需要定時重新整理。

DRAM中的儲存單元內容在通電狀態下會丟失,需要定期重新整理。因此增加RAS(行地址選擇)和CAS(列地址選擇)訊號線,這樣可以減少地址引腳,並方便重新整理操作。

(2)只讀儲存器——非易失性

只讀儲存器(ROM)通常又分成EPROMEEPROM和快閃記憶體(Flash

目前,快閃記憶體作為只讀儲存器在嵌入式系統中被大量採用,快閃記憶體使用標準電壓既可擦寫和程式設計,因此,快閃記憶體在標準電壓的系統內就可進行程式設計寫入。

    NORNAND是現在市場上兩種主要的非易失快閃記憶體技術。

NAND Flash和NOR Flash比較:

1)        1988年,Intel首先開發出NORFlash技術;

2)        1989年,東芝公司發表了NANDFlash結構的儲存器。

1.        NAND Flash和NOR Flash比較,有以下特點:

3)        NOR Flash的讀取速度比NANDFlash稍快一些,NAND Flash的擦除和寫入速度比NOR Flash快很多。

4)        Flash晶片在寫入操作時,需要先進行擦除操作。NAND Flash的擦除單元更小,因此相應的擦除電路更少。

5)        NOR Flash帶有SRAM介面,有足夠的地址引腳來定址,可以很容易地存取其內部的每一個位元組,可以像其他SRAM儲存器那樣與微處理器連線;NAND Flash器件使用複雜的I/O口來序列地存取資料,各個產品或廠商的方法還各不相同,因此與微處理器的介面複雜。

6)        NAND Flash讀和寫操作採用512位元組的塊,這一點類似硬碟管理操作,很自然地,基於NAND Flash的儲存器就可以取代硬碟或其他塊裝置。

二.記憶體管理單元

1.虛擬記憶體與虛擬地址

MMU,全稱Memory Manage Unit,中文名—儲存器管理單元。

虛擬記憶體:

虛擬記憶體的基本思想是程式,資料,堆疊的總的大小可以超過物理儲存器的大小,作業系統把當前使用的部分保留在記憶體中,而把其他未被使用的部分儲存在磁碟上。

虛擬地址:

計算機上都存在一個程式能夠產生的地址集合,我們稱之為地址範圍。這個範圍就是我們的程式能夠產生的地址範圍,我們把這個地址範圍稱為虛擬地址空間,該空間中的某一個地址我們稱之為虛擬地址

實體地址:

與虛擬地址空間和虛擬地址相對應的則是實體地址空間和實體地址,大多數時候我們的系統所具備的實體地址空間只是虛擬地址空間的一個子集。

2.地址對映

地址對映:

在沒有使用虛擬儲存器的機器上,虛擬地址被直接送到記憶體總線上,使具有相同地址的物理儲存器被讀寫。

在使用了虛擬儲存器的情況下,虛擬地址不是被直接送到記憶體地址總線上,而是送到記憶體管理單元——MMU,其功能是把虛擬地址對映為實體地址


大多數使用虛擬儲存器的系統都使用一種分頁技術虛擬地址空間劃分成稱為頁(page)單位,而相應的實體地址空間也被進行劃分,單位是頁框(frame)。頁和頁框的大小必須相同

這個例子有一臺可以生成16位地址的機器,虛擬地址範圍0x0000~0xFFFF(64K),而這臺機器只有32K的實體地址,他可以執行64K的程式,但該程式不能一次性調入記憶體執行。


系統上電前,所有的程式和資料都儲存在FLASH中。

系統上電後,異常中斷處理和資料棧就被移到32位的RAM中,使異常中斷處理速度較快;RW資料以及ZI資料移到16位RAM中;其他的RO程式碼在FLASH中執行。

系統復位時,FLASH位於地址0處,復位後開始執行的指令把FLASH對映到別的非0地址段,而把RAM對映到地址0處。

3.系統初始化(P116)

系統初始化有兩個階段:

    1. 初始化執行環境

  ——設定入口地址

       ——設定異常向量表和中斷向量表

       ——初始化儲存器系統

       ——初始化堆疊

       ——初始化關鍵的I/O裝置

       ——初始化中斷系統需要的RAM變數

       ——中斷使能

       ——切換處理器模式和處理器狀態

2. 初始化應用程式

 ——初始化非0可寫變數

    ——對ZI資料段清0

    ——對有作業系統的應用系統,執行環境在作業系統啟動時初始化,然後通過main()函式自動進入應用程式,C執行時庫中的_main()函式初始化應用程式。對於沒有作業系統的應用系統,ROM中的程式碼必須提供—種應用程式初始化自身和開始執行的方法。

三.S5PV210的儲存系統

1.S5PV210的儲存系統框圖


2.S5PV210的虛擬地址對映

TLB及TTW


MMU本身有少量儲存空間存放從虛擬地址到實體地址的匹配表,此表稱作TLB(快表,也稱頁表)。TLB中內容包括:虛址及其對應的實體地址,許可權,域和對映型別

當CPU對一虛擬地址進行存取時首先搜尋TLB表以查詢對應的實體地址等資訊,稱為Translation Table Walk,TTW。經過TTW過程後,將查到的資訊儲存到TLB,然後根據TLB表項的實體地址進行讀寫。

S5PV210儲存器地址對映:


3.S5PV210微處理器的啟動過程


1)        BL0:IROM中固化啟動程式碼;

2)        BL1:在IRAM自動從外儲存器(nand/sd/usb)中拷貝的uboot.bin二進位制檔案頭16K程式碼;

3)        BL2:在程式碼重定向後在記憶體中執行的UBOOT完整程式碼。

S5PV210上電將從IROM處執行固化的啟動程式碼BL0,它對時鐘等初始化、對啟動裝置進行判斷,並從啟動裝置中複製BL1(最大16KB)到IRAM地址0xd0020000處,其中0xd0020010之前的16個位元組儲存的BL1的校驗資訊和BL1尺寸,對BL1進行校驗,校驗成功後轉入BL1進行執行。

四.S5PV210的記憶體控制器

1.DRAM控制器

    DRAM控制器是高階微控制匯流排結構(AMBA)AXI。為支援高速儲存裝置,DRAM控制器使用SEC DDRPHY介面。S5PV210有兩個獨立的DRAM控制器和介面DMC0DMC1。DMC0和DMC1支援的最大記憶體容量分別為512M位元和1G位元,但這兩個控制器必須使用同樣記憶體容量。其主要特性有:

1)       相容JEDEC DDR2、低功率DDR和、DDR2 SDRAM標準;

2)       使用SEC LPDDR2PHY介面來支援高速儲存裝置;

3)       支援兩個外部晶片選擇和每晶片包含1/2/4/8個儲存體;

4)       支援128 MB, 256MB, 512 MB, 1 GB, 2 GB and 4 GB的密度儲存裝置;

5)       支援16/32位元的儲存資料頻寬。

2.SROM控制器

    S5PV210SROM支援外接8/16位元NOR Flash/PROM/SRAM儲存器。共支援6個高達16MB的儲存體。

    SROM控制器的主要特性有:

1)       支援SRAM,各種ROM和NOR快閃記憶體;

2)       僅支援8位元或16位元的資料匯流排;

3)       地址空間:每儲存體可達16MB;

4)       支援6個儲存體;

5)       記憶體的起始地址固定;

6)       支援位元和半字。

3.OneNAND控制器

S5PV210支援用於OneNAND和Flex-OneNAND儲存裝置的外部匯流排。該OneNAND控制器支援非同步和同步匯流排讀寫操作,該控制器還整合專用DMA引擎對儲存裝置操作進行加速。

    OneNand控制器的主要特性有:

1)       支援資料緩衝(23位預讀取FIFO和32位輸出FIFO)。

2)       為匹配OneNAND和AHB系統匯流排介面速度,支援非同步FIFO。

3)       支援OneNAND快閃記憶體裝置的同步和非同步讀/寫。

4)       可程式設計突發傳輸大小的OneNAND快閃記憶體介面。

5)       支援16位資料通道記憶體和32位資料通道AHB系統匯流排介面。

6)       用單一匯流排介面協議支援OneNAND家族多種儲存裝置。

7)       最多支援兩個OneNAND裝置。

8)       支援OneNAND裝置的復位功能。

4.NAND控制器

S5PV210上的啟動程式可以在外部NAND快閃記憶體中執行。它會將NAND快閃記憶體上的資料拷貝到DRAM中。當NAND快閃記憶體內容被複制到DRAM之後,主程式會在DRAM上執行。

NAND控制器的主要特性有:

1)       NAND快閃記憶體介面:支援512位元組,2KB,4KB,8KB頁面。

2)       軟體模式可以直接訪問NAND快閃記憶體,例如用於讀/擦除/程式設計NAND快閃記憶體。

3)       支援8位NAND快閃記憶體介面匯流排。

4)       支援SLC和MLC NAND快閃記憶體。

5)       支援1 /4 /8/12/16位ECC。

6)       支援位元組/半字/字資料。

NANDFlash的讀寫程式見P123