胡東華老師講義第八週
胡東華老師講義
點擦可程式設計只讀儲存器
使用了二級的開關來進行配置當
當裝置出場的時候,讀出的預設都是1
20V的高壓可以把電子擊穿,可以使得電子流出,讀出0
如圖是電擦除的狀態,此時的D端接的是大電壓,
- 有1 的地方不管,沒有的地方加上高電壓
- 然在該寫0的地方加上20v程式設計寫入電壓
快閃記憶體NOR
按字編址1M*16位 按位元組編址2M*8 位
井號用來決定是A1還是D15
這裡的忙和就緒是兩個反訊號,
cpu需要根據外設是否忙來進行判斷能否繼續給外設下發新的指令和訊號。
由於快閃記憶體的速度非常快,所以可以使用塊來進行訪問資料
快閃記憶體的命令字是通過一系列的資料匯流排的資料來進行指定資料的的命令操作
並行儲存器
如何解決儲存器和cpu週期不匹配的問題呢?
改編字長的方法不是切實可行的
增加空間並行結構,是物理上的硬體堆疊,是不提倡的
如圖所示就是空間並行,是多個處理器同時處理多個儲存單元。
埠的優先判斷:片選訊號是先來而先判斷。
當兩端送來的地址一樣的時候,啟用判別邏輯功能
可以使用時間上的並行
多模組的資料儲存器
以出版來說,儲存器都是使用順序儲存的方式進行儲存的,所以同一個模組的儲存資料的是連續的,但是對於多個cpu來說,我們更傾向於使用更加有利於多個儲存器讀取的方式來進行資料的儲存——交叉資料儲存方式
順序儲存器:高位是模組,低位是字
交叉儲存器:高位是字,低位是模組。
交叉的模組術應該大於等於T/t
cache儲存器
他是介於cpu和駐村之間的小容量儲存器,存取速度比主存快,能高速的想cpu提供指令和資料。
cache和cpu是交換資料是以字為單位進行的,而cache和主存交換資料是以塊為單位進行的
所以主要的就是cache和cpu、主存的資料對映表
cpu把需要的資料同時發給cache和主存,如果cache有的話就由cache發給cpu,如果沒有一樣的,那麼就由主存發給cpu並且更新cache,更新cache的時候把包含cpu所需要的資訊的那一塊的資料全部都存入cache
cache是一個相連儲存器,他不是通過地址直接進行訪問的,而是把地址當做一個關鍵字,直接進行檢索訪問的
cache的讀寫操作策略流程圖
cache的訪問命中率:
cache的平均訪問時間就是cache訪問時間的數學期望
cache的訪問效率:cache訪問時間除以平均訪問時間
由於cache只是主存大小的千萬分之一,那麼cache的訪問效率能否達到80%?
答案是可以的,通過大量的資料檢驗,我們分析發現大量的原始碼符合二八定律,大量的原始碼都是使用的連續的記憶體的地址,所以cache的訪問效率能夠達到80%以上,而且這一資料並不需要任何技術處理,現技術加上了大量的呼叫替換演算法加強,使得我們的cache的訪問效率可以達到95%左右,蘋果的cache技術可以達到99%以上
如何構建cache的對映關係,如何決定cache的呼叫替換演算法?
cache的對映
全級聯對映(適合小容量的cache)
cache的一行可以正好儲存主存的一塊
對映方式如下:
對映表裡面的關鍵詞叫做標記位,影射方式 :標記位加標記塊
單獨的把標記位掛在行號的前面就可以了,這樣就可使用標記位來訪問主存塊。
直接對映方式
cache一共有n行,那麼只需要通過cache的最後位數進行檢索
組級聯對映
組級聯對映的方式是把記憶體分為若干組,每一組的行數是一定的,但是每組的內容是靈活選取的。
此外,組級聯對映的儲存方式是把主存分為三段進行的。
是上兩個方式的折中。
x路組級聯對映,一組就是x行主存內容。
cache的替換策略
cache的替換策略,替換策略和cache的對映方式有著很緊密的關係
直接對映方式需要替換方式嗎?不需要
全級聯替換方式組級聯替換方式需要替換策略嗎?行內需要
直接替換的替換策略
-
隨機的替換策略
-
最不經常的替換策略(LFU)
每一行設定一個計數器,被訪問的計數行加一,換出的是計數最小的一位。
-
最近最少的替換演算法(LRU)
(我拿過去賭明天),使用過去長久未被訪問過得行換出。每行設定一個計數器,cache每命中一次,命中行的計數器清零,其他的計數器加一。這也是目前最有效地計數方法
- 計數器的位數:計數器和行數有關,只需要把每一行使用的頻率區分開就可以了。例如4行cache只需要2位
cacahe的寫操作策略
cache是一個為了加速讀寫主存的一個副本,但是如果每一次的cache的寫入都同步到主存當中,那麼cache的寫操作就失去了意義,如何快速方便的對cache進行寫操作呢?
1.寫回法
當cpu寫命中cache的時候,cpu僅僅改寫cache的內容而不是立即存入主存,只有當此行沒丟掉的時候才寫入主存,但是這種方法每一個cache的行必須配備一個修改位置。以此反映一個cache是否被該寫過
2.全寫法
3.寫一次
cache的儲存容量
為了表示資料是否有效,可以配備一位有效位。
有效位 | 一致性維護位 | 替換演算法控制位 | 標記位 | 資料區 |
---|---|---|---|---|
1位 | 1位 | n位 | t位 | 越大越好 |
cache的儲存器容量 = 每行位數 * 總行數。
每行的位數 = 1+1+n+t+資料位(主存一塊的大小)。
虛擬儲存器
它是藉助磁碟等輔助儲存空間來輔助儲存器擴大儲存容量
頁式虛擬儲存器
分頁式儲存系統中把使用者程式邏輯空間分割為大小相等的片,稱為一
個邏輯頁或者頁,同時按照同樣的大小將系統實體記憶體分割為大小相等的
儲存塊,我們稱為物理塊或者塊。
分頁系統而好處:實現程式的離散裝入,也實現了程式的部分裝入;
程式系統的頁數遠遠大於實體記憶體的塊數。
在分頁系統當中,可以使用頁號與業內偏移地址構成,物理空間可以用塊號與塊內偏移地址構成。
頁表暫存器的
使用Cache來儲存頁表--快表
可以使用cache把經常訪問的頁表和塊號儲存起來,大大加快訪問速度
頁表儲存器的最好情況和最差情況
最好:在cache中找到了頁塊轉換器對應的頁號和塊號,然後直接在cache中又訪問到了所查詢到的頁塊號對應的地址資料。
最差:在cache中沒有找到頁塊轉換器對應的行號和塊號,沒有查到,在主存找到。然後在cache中根據查詢到的頁塊號查詢所對應的地址資料,沒有查到,在主存找到。
書上有八種可能。
主存中的頁表替換策略
如果主存和cache都沒有命中,那麼就需要啟動缺頁機制了
段式虛擬儲存器
分頁方式過於硬核,對程式設計師不太友好,所以我們使用了按段劃分的策略。把資料按段劃分很好理解,每一個大小不固定,是按照程式的程式碼段和資料段來儲存資料。
便於實現共享和保護,只需要在需要的頁面前加上一個保護位就可以了,一般資料位進行保護,程式碼段進行共享。
在分段系統中,還有一個段表的暫存器,可以使用段表暫存器把段號轉換成段在記憶體中的機制形成的實體地址。
但是如何更高效的利用儲存空間呢?
端頁式系統的虛擬儲存器
這種虛儲存器兼具了段式儲存和頁式儲存的優點,可以把使用者的程式分成了若成幾若干段,每一段由若干頁組成,於是可以