記憶體系統

具儲存功能的設備中,只有主記憶體單元是不可或缺的

內儲程式的控制方式
1程式與資料在執行前必須先載入主記憶體單元中
2讓cpu在instruction cycle(指令週期)的過程中,到主記憶體單元存取要執行的指令與資料

cell(儲存格):主記憶體的基本組成單位,也是一個定址單元,可儲存資料和對應的位址,因此會時具有位址和資料兩種性質
存取單元:通常是一個word(字組),由定址單元所組成,字組含多個位元組時,會以最小位址當成字組的起始位址
ps:
電腦若是32位元,表示1word=32bit
ps:
定址單元在不同機器上可能有不同長度,電腦的最小定址單元:
 是字組則稱為word addressable computer(字組定址電腦) ,ex:超級電腦
 是位元則稱bit addressable computer, ex:burroughs b1700/b1800
 是位元組則稱byte addressable computer, ex:ibm360/370,大多數的電算機

主記憶體單元
1完全是由定址單元所組成,由於定址單元的位址是線性的排列,也可視為一維陣列
2由多個標準規格的半導體記憶體晶片所組成
ex:512*8bit SRAM 表示有512個位址,每個位址資料長度為8bit
若要組成定址空間為4096的主記憶體單元,則需要8個512*8bitSRAM
3位址分為兩部份,前部份表示記憶體晶片編號,後部份表示記憶體晶片的內部位址
4實際位址格式:[ 起始位址 | 相對位址 ]
5存取單元(字組)通常由多個定址單元(位元組)組成,這是因為存取單元和定址單元長度上的差異
ex:若要用8個512*8bitSRAM組成定址空間為4k的主記憶體單元
同時存取單元要16bit,則可視為一個四列二行的二維矩陣,也等於有2048個16bit存取單元(word)
但是如果存取單元要32bit,則可視為一個2列四行的二維矩陣,也等於有1024個32bit存取單元(word)

memory bus(記憶體匯流排)
用在cpu與主記憶體間資料或指令的傳送,可分為:
data bus(資料匯流排):連接到cpu的MDR(記憶體資料暫存器)
 若data bus與MDR有n個位元,表示主記憶體單元的存取單元的長度是n個位元
address bus(位址匯流排):連接到cpu的MAR(記憶體位址暫存器)
 若address bus與MAR有k個位元,表示主記憶體單元的定址空間2^k個主記憶體位址
 ex:address bus有16個位元,定址空間有65536個位址
control bus(控制匯流排):連接到cpu的控制單元
……………………………………………………

位元組定址電腦
大部份電子計算機是位元組定址電腦
位元組定址電腦根據字組內部位元組的位址排列順序分為:
big endian(高位排列):由左而右
  最小的位元組位址是由字組的big-end byte(高位位元組)開始

0123
4567

ex:motorola 68000,ibm360/370
little endian(低位排列):由右而左
  最小的位元組位址是由字組的little-end byte(低位位元組)開始 

3210
7654

ex:intel 8086,dec pdp-11
ps:
高位排列與低位排列的電腦互傳資料時,傳輸單位為
 字組:無影響
 位元組:排列順序會相反

……………………………………………………

記憶體元件
多為半導體製造,也稱半導體記憶體,包括
volatile memory(揮發性記憶體)和non-volatile memory(非揮發性記憶體):

volatile memory
SRAM(static random access memory,靜態隨機存取記憶體)
 以flip flop(正反器)為主要元件
 速度約20ns至10ns
 通常用來做快取記憶體
DRAM(static random access memory,動態隨機存取記憶體)
 以capacitor(電容)為主要元件
 速度約100ns至50ns
 通常用來做主記憶體

non-volatile memory
ROM(read only memory,唯讀記憶體)
 通常用在bios,微程式,儲存不需更改的資料…等
 依資料可否再修改分為:
 mask rom(遮罩式rom):資料己在記憶體內無法修法
 PROM(programmable rom,可程式規劃的rom):資料只能被使用者寫入記憶體一次
 EPROM(erasable programmable rom,可抹除的rom):允許使用高頻率的紫外線將會部資料清除
 EEPROM(electrically erasable programmable rom,電子可抹除的rom):允許使用高電壓將指定資料清除
 flash memory:具ram的特質,且可讀寫並長久保存資料

……………………………………………………

memory cycle(記憶體週期) 
對主記憶體單元進行一次讀取運作的過程
讀取主記憶體時:
 1,cpu透過address bus送出位址,再用control bus送出讀取的控制信號
 2,主憶體把指定的位址所存放的資料或指令透過data bus傳給cpu
寫入主記憶體時:
 1,cpu透過address bus送出位址,data bus送出運算結果,再透過control bus送出寫入的控制信號
 2,主記憶體將運算結果寫入指定的位址內部

memory存取速度評估標準
主要有以下兩種 
memory access time(記憶體存取時間):一個記憶體存取作業由開始到完成所需時間
memory cycle time(記憶體週期時間):連續兩次獨立的記憶體存取運作的啟動所需要的時間
  這可能包含memory access time,regeneration time(資料再生時間),以及其他任何時間
  memory cycle time可能等於或大於memory access time
  ex:dram是大於,sram及rom是等於memory access time
  建議採用的評估標準

……………………………………………………………………………………….

memory hierarchy(記憶體階層)
說明:由多種不同的記憶體元件加以組合的多個階層的記憶體系統
ps:一般電算機常用三階層記憶體系統,由上而下是快取記憶體,主記憶體,輔助記憶體
優點:可提供較快的存取時間和較低的平均成本,和極大的容量空間,
1 在上層使用少量但快速的快取記憶體,在擊中率較高時可提昇均存取效能
2 在下層使用大量但便宜的輔助記憶體,可降低平均成本
運作:
1,cpu會從最上層記憶體開始存取,若無找到會逐一往下層記憶體尋找
2,找到後會由下層記憶體逐一傳送到上層記憶體,以便下次存取可直接在上層找到
ps:到下層記憶體元件搬區塊到上層時,存取效率會變差
ps:區塊是不同階層的記憶體間的傳送單元
ps:上層記憶體所存放的指令或資料,在下層記憶體中也會有
ps:不同階層記憶體元件差異在於存取速度,單位成本,容量空間,上層的記憶體元件較快成本較高容量小,下層則相反

memory hierarchy的平均成本
設s1,s2,s3為3個記憶體的容量空間,c1,c2,c3為3個記憶體的單位成本
公式:總成本/總容量空間=((s1*c1)+(s2*c2)+(s3*c3))/(s1+s2+s3)

memory hierarchy的average access time(平均存取時間)
設t1,t2,t3是3個記憶體的存取時間,h1,h2,h3是3個記憶體的擊中率
公式:t1*h1+(t1+t2)*((1-h1)*h2)+(t1+t2+t3)*((1-h1)*(1-h2))
=(t1*1)+(t2*(1-h1))+(t3*((1-h1)*(1-h2)))
ex:
t1和t2分別是18^-8和10^-3,若average access time要等於10^-4
則h1>=0.90001,可由此公式推導(10^-8*1)+(10^-3*(1-h1)) <= 10^-4
ex:
t1=18^-3,h1=0.90001,若average access time要等於10^-5
則t2<=099*10^-4,可由此公式推導(10^-8*1)+(t2*(1-0.90001)) <= 10^-5

管理功能
memory hierarchy系統的設計其基本的記憶體管理功能有
動態位址轉換:程式執行時,用來將下層記憶體的位址轉換成上層記憶體的位址的機置
放置的策略:如何在上層記憶體中找一個區塊,來放置下層記憶體傳送上來的區塊
取代的策略:如何在上層記憶體中決定一個區塊,讓下層記憶體傳送上來的區塊所取代
抓取的策略:決定何時由下層記憶體傳送區塊到上層記憶體

memory management unit(記憶體管理單元)
用途:提供記憶體管理功能
依考量因素的不同在實作上大致有:
在暫存器和快取記憶體間通常由翻譯器來負責
在快取記憶體和主記憶體間採硬體實作或是微程式負責,提昇存取效能
在主記憶體和輔助記憶體間採軟體實作,由作業系統負責,增加容量空間

locality of reference(存取的局部性)
說明:大多數的存取都集中在極少數的指令或資料上,其他多數的指令或資料則很少被取用
幫助:讓快取記憶體只需很小的空間就可存放這些少數重覆的指令或資料,提高擊中率使平均存取時間接近快取記憶體時間,提高效能
可分為:
temporal locality(時間的局部性):一個記憶體位址被存取後,不久會再度被存取
ex:迴圈,副程式,以及堆疊,迴圈控制變數,計算總合變數
spatial locality(空間的局部性):一個記憶體位址被存取後,不久其附近的記憶體位址也會被存取
ex:循序指令,以及陣列,相關的變數
ps:無存取局部性的有分支指令,雜湊搜尋表,二元搜尋…等

…………………………………………………………………………

interleaving memory(交錯式記憶體)
1使用tdm的技術來增加memory bus頻寬的主記憶體
ps:tdm(time division multiplex,分時多工):允許多個半導體記憶體晶片同時透過記憶體匯流排進行指令或資料的存取
2會將主記憶體單元視為多個獨立的memory module(記憶體模組)
3設計上須讓每個memory module有專屬的MAR與MDR,才可同時對多個獨立的memory module進行存取
ps:最簡單的cpu只需要一對MAR與MDR
4主記憶體被切割成n個memory module,最佳情況理論上可提昇n倍的存取效能
ps:實際上因data dependence(資料相依)與分支指令會影響存取效能而無法達到最佳情況
5特別適用向量資料的存取

interleaving memory實作方式
主要有以下三種
high order interleaving(高位交錯)
  特色:可靠度高,無法提昇存取效能
  位址格式:[記憶體模組編號:相對位址]
low order interleaving(低位交錯)
  特色:可提昇存取效能,可靠度差
  位址格式:[相對位址:記憶體模組編號]
hybrid interleaving(混合交錯)
  特色:可靠度與存取效能好(但非最好)
  位址格式:[記憶體模組編號:相對位址:記憶體模組編號]

……………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………

cache memory(快取記憶體)
計算機組織與結構/記憶體系統-快取記憶體

virtual memory(虛擬記憶體)
計算機組織與結構/記憶體系統-虛擬記憶體

標籤記憶體
使用額外的標籤欄位指出有關資料屬性的所有訊息,讓每一個記憶體位址具有型態而能夠自我辨認
優點:具錯誤偵測的能力,提供資料型態自動轉換的功能,指令集只需較少指令種類,翻譯器可設計更簡單

associative memory(關聯式記憶體)
也稱content-addressed memory(內容存取記憶體)或scratchpad memory(草稿式記憶體)
允許使用資料的值進行存取的記憶體,也就是提供addressing-by-value model(內容存取模式)對資料進行存取
組成元件有:
memory array(記憶體陣列)
mask register(遮罩暫存器)
operand register(運算元暫存器)
operator register(運算子暫存器)
response array(回覆陣列)
缺點:製作成本高