26考研 | 王道 | 計算機組成原理 | 三、存儲系統

26考研 | 王道 | 計算機組成原理 | 三、存儲系統

文章目錄

  • 26考研 | 王道 | 計算機組成原理 | 三、存儲系統
    • 3.1 存儲系統基本概念
    • 3.2 主存儲器
      • 1. 主存儲器的基本組成
      • 2. SRAM與DRAM
        • 1.DRAM和SRAM對比
        • 2.DRAM的刷新
        • 3.DRAM的地址線復用技術
      • 3. 只讀存儲器ROM
      • 4.雙端口RAM和多模塊存儲器
    • 3.3 主存儲器與CPU的連接
      • 1.位擴展
      • 2.字擴展
      • 3.字位同時擴展
    • 3.4 外部存儲器
      • 1. 磁盤存儲器
        • 磁盤陣列
      • 2. 固態硬盤SSD
    • 3.5 高速緩沖存儲器
      • 1.基本原理
      • 2.Cache和主存間的映射方式
      • 3. Cache的替換算法
      • 4. Cache寫策略

3.1 存儲系統基本概念

image-20250601163809904

相聯存儲器的基本原理是指把存儲單元所存的內容的某一部分作為檢索項去檢索該存儲器,并把存儲器中與該檢索項符號的存儲單元內容進行讀出和寫入。所以是按內容或者地址進行尋址的,價格比較昂貴

一般用來制作TLB,相聯Cache等

存儲器的層次化結構

image-20250601154010601

主存和輔存之間的數據調動是由硬件和操作系統共同完成的,僅對應用級程序員透明

存儲器的分類–層次

image-20250601154320686

存儲器的分類–存儲介質

  • 半導體存儲器:主存、Cache
  • 磁表面存儲器:磁盤、磁帶(以磁性材料存儲信息)
  • 光存儲器:光盤(以光介質存儲信息)

image-20250601154402778

存儲器的分類–存取方式

image-20250601154641494

相聯存儲器既可以按地址又可以按內容尋址。

存儲器的分類–信息的可更改性

image-20250601154746479

CD-ROM是只讀型光盤存儲器,不屬于只讀存儲器ROM

存儲器的分類–信息的可保存性

image-20250601154850604

RAM都是易失性存儲器;

ROM都是非易失性存儲器;

存儲器的性能指標

image-20250601163732877

3.2 主存儲器

1. 主存儲器的基本組成

image-20250601165951634

基本的半導體元件及原理

在這里插入圖片描述

注:MOS管可理解為一種電控開關,輸入電壓達到某個閾值時,MOS管就可以接通。

存儲器芯片的基本原理

image-20250601164552496

image-20250601164840269

image-20250601165149162

片選線作用:一個內存條可能包含多塊存儲芯片,比如一共8塊,而我們想要的數據存在第5塊芯片里面,那么我們拿數據的時候就要讓第5塊芯片工作而其他的不工作。CS給予低電平,其他芯片為高電平。

譯碼驅動:其實就是在譯碼器和存儲矩陣中間加了一個驅動,讓譯碼器傳過來的電信號更加穩定的

image-20250601165640202

尋址

字節地址左移兩位就是對應的字的地址

比如1號字節是 1,左移兩位就是100,就是4,而按字尋址的編號2對應的就是字節尋址的編號4

2. SRAM與DRAM

image-20250601170332933

SDRAM依舊是DRAM,所以依舊要刷新的

1.DRAM和SRAM對比

3.2.1 的主存儲器的基本組成部分就是那DRAM舉例子的,可以回看一下

RAM屬于易失性半導體,SRAM和DRAM區別在于是否需要動態刷新

image-20250601170434704

DRAM芯片:使用柵極電容存儲信息

SRAM芯片:使用雙穩態觸發器存儲信息

雙穩態觸發器這個圖做個了解就行

image-20250601170908072

image-20250601170940974

image-20250601172524778

SDRAM是同步DRAM芯片,與傳統的異步DRAM不同。SDRAM與CPU的數據交換同步與時鐘信號,并且以CPU-主存總線的最高速度運行,而不需要等待插入狀態

而傳統的DRAM中,CPU將地址和控制信號送入存儲器后,需要經過一段延遲時間數據才能讀出或者寫入。在此期間,CPU不斷采樣DRAM的完成信號,在讀寫完成前,CPU不能干別的,降低了CPU的執行速度

而SDRAM在系統時鐘控制下進行數據的讀出和寫入,它將CPU發出的地址和控制信號鎖存起來,經過指定的時鐘周期后再響應,此時CPU可以執行別的操作

2.DRAM的刷新

image-20250601171147143

image-20250601171402480

為什么要用行列地址(二維)?而不是用行地址或者列地址(一維)?

如果是一維的話,加入地址線有20位,那就需要220這么多個選通線才能連接到對應的存儲單元

但如果是二維的話,即有行和列來確定一個存儲單元,那行和列分別只需要210個選通線即可

即可以減少選通線的數量,使得電路變得簡單和清晰

image-20250601171739449

image-20250601172123184

分散刷新不存在死區,因為把刷新時間算到存取周期里面去了,所以存取周期會變長。

異步刷新雖然縮短了死時間,但是死時間依然存在

CPU可以在死區時間的時候去做運算(比如譯碼階段),然后不是死區的時間來讀寫

一次完整的刷新過程只需要占用一個存取周期(書上P93頁15題)

3.DRAM的地址線復用技術

image-20250601172347484

行/列緩沖器通常使用SRAM實現

同時送行列地址,需要8根地址線。兩次送只需要4根地址線。

地址線復用技術:地址線是原來的1/2(行和列相等)且地址線分行、列兩次傳送。第一次送行地址到行地址緩沖器,第二次送列地址到列地址緩沖器,然后分別送到對應的譯碼器。

突發傳輸方式:在尋址階段給出數據的首地址,在傳輸階段可傳送多個連續存儲單元的數據

3. 只讀存儲器ROM

RAM和ROM可以統一編址。比如主存就是

image-20250601173735085

易失性說的是斷電后數據會消失

EPROM不能作為隨機存儲器。

UVEPROM要擦除只能選擇全部擦除或者不擦除,不能擦一部分剩下的不擦除

閃存存儲元件由MOS管組成,是一種半導體存儲器,采用隨機訪問方式,可替代計算機外部存儲器

image-20250601173604671

image-20250601173630401

說主存不是光有內存條這個RAM,還有主板上的ROM芯片,也是主存的一部分

4.雙端口RAM和多模塊存儲器

image-20250601202437306

單純的擴容的意思是說,高位交叉編制沒有加快訪存的速度,即CPU在恢復時間內不能訪問正在恢復的內存條的情況沒有被改善,而低位卻有效改善了這個問題,加快了訪存速度

image-20250601173956007

image-20250601200007328

image-20250601200333877

image-20250601201003341

連續訪問者五個地址的數,分別是編號0,1,2,3,4

對于高位編址來說,這五個數據都在M0內存條上,而讀或寫完一個數據以后就要等待恢復時間,所以花費的時間就長很多

而對于低位編址來說,0在M0,1在M1,2在M2,3在M3,4在M1。那我們花r的時間讀完M0上面的0就可以立馬去讀M1上的1,而不需要等M0恢復,從而節省了很多的時間。

為什么討論的是連續訪問(連續地址)的情況?因為很多情況下就是訪問連續的地址比如數組

image-20250601201618658

m=T/r的時候就是完美銜接,這個時候就是最好的情況,沒有閑置也不用等待,而且存儲體的個數也最少,成本就低

image-20250601202410484

對于靈活性來說,多體比單體好一些,比如讀取,2,3,4,5這四個存儲單元的數據

多體會直接讀取這四個,而單體就會把第一行和第二行全給讀下來,那么0,1,6,7這四個就是多讀的,其實不太需要這四個

對于速度而言,兩者相差不大

對于上面的多體,有m個存儲體,而m=T/r的時候最好,在一個存取周期T內也是讀出m個字

對于下面的單體,每個存儲單元有m個字,在一個存取周期T內一次也是讀出m個字

image-20250601203253718

相同主頻:主頻不一樣的話,高的主頻會向下兼容,和低的主頻保持一致,這樣其實就相當于白花了很多錢

相同容量:在兩者容量相同的地方,還是雙通道,但是在低容量沒有了的地方,而高容量內存條還有內存的地方,那其實就相當于單通道了。用游戲來說的話,如果正好放在了低地址的地方,即雙通道的地方,那運行速度就快,但是如果不巧被放到了高地址的地方,那就還是單通道,性能會很不穩定

如圖:左邊只有三個存儲單元,右邊有8個,就會出現上面的情況

image-20250601203656539

3.3 主存儲器與CPU的連接

image-20250601211550983

image-20250601204050951

現在的計算機MAR、MDR都在CPU中,而不再主存中

8K*8位含義

8K是存儲單元數量,是213,需要13根地址線

8位是每個存儲單元存儲的bit位數

image-20250601204206712

image-20250601204446033

1.位擴展

image-20250601204934248

image-20250601205036480

2.字擴展

image-20250601205322533

用這種方法,CPU有n條多余的地址線,只能有n個片選信號

并且把兩塊芯片看做一個整體的話,那么開頭的地址只能為01或者10,不能用00或者11

可以做如下的優化(譯碼片選法),就是在第二塊的片選線上加個非門,這樣的話地址空間就是連續的了,從全0到全1都可以用了

image-20250601205954293

image-20250601210246620

考試可能不選A13和A14這兩個連著的,可能選A13和A15作為譯碼器的輸入,那么A14是多少就無關緊要了

那么就會發現多出來了一倍的地址,全都映射到這四塊芯片中了,而四塊芯片肯定裝不下,所以實際中不可能用這種設計

image-20250601210311001

image-20250601210553156

3.字位同時擴展

image-20250601210911202

一共四組芯片,一組2個芯片。

1.原來是一塊芯片,16K*4位

2.位擴展得到每組的芯片個數,就是目標位數除以單個芯片的位數,8/4=2,所以每組是2個新盤

經過位擴展后,變成一組芯片,16K*8位

3.字擴展得到一共要幾組,就是目標存儲單元數量除以一組的單元數量,64K/16K=4,那么一共需要4組

經過字擴展后,把16K*8位變成64K*8位的

image-20250601211856723

image-20250601212032748

有3個使能信號,那么必須同時滿足才可以工作,有一個不滿足就不可以工作
也就是只有100才會正常工作,而其他的001,101之類的都是非法信號,會讓所有的結果都為0,再取反那就都是1然后輸出出去了

這樣可以讓CPU使用使能端控制片選信號的生效時間

image-20250601212414832

MREQ,低電平有效,主存請求信號, 當CPU想要訪問主存的時候就會讓它有效

它有效才會讓譯碼器使能,也就是讓譯碼器有效

CPU訪存是這樣的:

1.先發送出去地址信號,由于地址信號都是電信號,所以要先等一下讓它穩定

2.等到地址信號穩定以后讓MREQ有效,然后片選線才會有效

這樣保證了主存收到的地址信號一定是穩定的

對于左下角的圖,中間有上上下下的,那說明傳過去的電信號有1有0,就是有高電平也有低電平

上面提到,發送出去地址信號以后會等一段時間。所以圖中地址有效的時候CS并不是立馬開始有效,而是中間間隔了一段時間才開始有效,這中間這段時間就是等待的時間。然后在地址有效時間Tco內把數據輸出出去。

注:灰色的部分是無效的地方,白色的地方才是有效的地方

3.4 外部存儲器

1. 磁盤存儲器

image-20250602173738027

image-20250602170248404

image-20250602170448167

1、磁盤設備的組成

image-20250602170927901

2、磁盤的性能指標

image-20250602172157476

rN是一個理論最大值

image-20250602171459462

格式化容量會有一部分容量用于別的用途,而非格式化容量是該磁盤的二進制bit存儲上限,所以格式化容量比非格式化容量要小

每個磁道記錄信息的信息量是相同的,并不是圓的半徑越大信息量越多

image-20250602172039873

磁盤控制器延遲:(有的題有,有的題沒有)電子部件接收主機信號,然后向磁盤發出讀寫信號的時間

image-20250602172537266

如果數據是并行傳給磁盤的,那在這之前還要經過一個串并行轉換電路才行,因為磁盤只能串行的工作

磁盤陣列

image-20250602173626699

越后面的磁盤陣列信息冗余越少,安全性和可靠性越高,成本也越低

image-20250602173237775

RAID0:就是RAID0是一個邏輯盤,是通過磁盤1和磁盤2映射而來,比如RAID0的第一個存儲單元的數據存放在磁盤1的第一個單元和磁盤2第一個單元,那我們讀取邏輯盤的時候就相當于有兩個磁盤同時為我們工作,可以實現并行訪問,提高速度

但如果物理磁盤有比特跳變之類的錯誤的話,RAID0也發現不了

RAID1:存了兩份一樣的數據,那就是有冗余了,兩份可以對比著看,有錯誤可以發現,所以是有校驗的。也實現了并行訪問,但是存儲空間有些浪費

image-20250602173433649

0-3只存儲比特數據,4-6存儲校驗數據

這樣的話浪費的空間沒有RAID1那么多

2. 固態硬盤SSD

image-20250602175002356

image-20250602174707438

image-20250602174135625

閃存芯片可以分為很多塊,每個塊可以分為很多頁

每個塊相當于磁盤中的磁道,每個頁相當于磁盤中的塊/扇區

也就是說SSD的讀寫的基本單位是頁也不是塊

image-20250602174945174

3.5 高速緩沖存儲器

1.Cache里面存儲的是主存的副本。所以如果Cache有40KB,主存有200MB

那存儲系統的容量還是200MB,而不是200MB+40KB,因為Cache存的僅僅是副本而已

2.Cache訪問失效的時候,通常不僅要像CPU傳遞消息,還要將信息寫入Cache,傳遞消息的數據寬度是字,寫入信息的數據寬度是塊。

CPU與cache或者主存信息信息交互的單位是字,而Cache與主存間信息交互的單位是塊

3.Cache的功能全部由硬件實現

4.多級cache中,算缺失率的時候,只需要看到最低一級的cache的時候還有多少沒有命中

5.Cache中地址映射表的大小就是(有效位+標記位)*塊數

6.邏輯地址的頁和物理地址的塊對應,映射的話就是邏輯的頁映射到物理的塊上面去

7.對于有高速緩存,主存,硬盤構成的三級存儲體系,CPU直接根據主存物理地址進行訪問

8.image-20250605201050911

標記位前面可能還有有效位、臟位、替換控制位,通過這四個位來算Cache除了數據部分還有得有多少的容量

不管什么方法都會有有效位,寫回法一定會有臟a位。替換控制位很少見

9.組相聯映射中,是幾路組相聯就有幾個比較器。這個比較器是來看給出的主存地址具體在組內的哪個塊

所以 比較器里面存的就是標記位(不包含組號),因為一組有 的塊數和路數相同,所以比較器的個數就是和路數相同的,一共要比較的次數也和路數一樣

1.基本原理

image-20250602211304010

image-20250602205157410

image-20250602210202690

按照行優先存儲的,如果循環體按照列優先進行訪問的話,那么會比按照行優先進行訪問的慢很多,因為按照行優先會有很多地址可以映射到cache中

image-20250602210641791

image-20250602210823148

image-20250602211058779

image-20250602211220115

2.Cache和主存間的映射方式

image-20250602213029735

image-20250602212126065

image-20250602212416219

image-20250602212711225

其實就是主存容量是Cache的多少倍,如果主存容量是cache的4096=212倍,那么標記位數就是 12

也就是得標記4096個位置才行

比如圖中的標記位數就是 256MB/(8*64B)=219

有效位和標記位組成地址映射表,其大小就是(有效位數+標記位數)* cache塊數

image-20250602212802971

image-20250602212923576

image-20250602213002984

3. Cache的替換算法

image-20250602214715709

image-20250602213420788

image-20250602213550902

image-20250602214014188

image-20250602214051651

image-20250602214125073

image-20250602214237061

image-20250602214305898

image-20250602214551003

4. Cache寫策略

image-20250602224028486

image-20250602223356639

image-20250602223601159

image-20250602223515516

阻塞的意思是cpu必須阻塞等待

image-20250602223734924

image-20250602223805693

image-20250602223854440

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/83754.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/83754.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/83754.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

IDEA 開發PHP配置調試插件XDebug

1、安裝PHP環境 為了方便,使用的PhpStudy。 安裝路徑:D:\resources\phpstudy_pro\Extensions\php\php7.3.4nts 2、下載Xdebug Xdebug: Downloads 選擇對應的版本下載,本次使用的是7.3。 3、配置Xdebug 在php.ini中添加Xdebug配置。 D…

Go 語言的 GC 垃圾回收

序言 垃圾回收(Garbage Collection,簡稱 GC)機制 是一種自動內存管理技術,主要用于在程序運行時自動識別并釋放不再使用的內存空間,防止內存泄漏和不必要的資源浪費。這篇文章讓我們來看一下 Go 語言的垃圾回收機制是如…

60天python訓練計劃----day45

DAY 45 Tensorboard使用介紹 知識點回顧: tensorboard的發展歷史和原理tensorboard的常見操作tensorboard在cifar上的實戰:MLP和CNN模型 之前的內容中,我們在神經網絡訓練中,為了幫助自己理解,借用了很多的組件&#x…

RocketMQ基礎概念的理解

1、生產者 生產者和主題之間存在多對多關系。一個生產者可以向多個主題發送消息,一個主題可以接收來自多個生產者的消息。這種多對多關系有助于提高性能擴展和災難恢復能力。 2、消費者以及消費者組 一個隊列可以被多個消費者(其中這多個消費者必須分…

Flash燒錄速度和加載配置速度(純FPGA ZYNQ)

在工程綜合完成或者implement完成后,打開綜合設計或者實現設計。 toots--->Edit Device Properties--->打開比特流設置 將bitstream進行壓縮 上圖中,時鐘頻率選擇的檔位有限,最大為66MHZ io的bus width可以設置為x1,x2,x4 vivado在設計…

優化09-表連接

一、表連接介紹 表連接類型 表連接是關系型數據庫關鍵特性,在關系型數據庫中,表連接分為三類:循環嵌套連接(Nested Loops Join)、哈希連接(Hash Join)、合并排序連接(Merge Sort J…

Dify工作流實踐—根據word需求文檔編寫測試用例到Excel中

前言 這篇文章依賴到的操作可查閱我之前的文章: dify里的大模型是怎么添加進來的:在Windows本地部署Dify詳細操作 flask 框架app.route()函數的開發和調用:PythonWeb開發框架—Flask工程創建和app.route使用詳解 結構化提示詞的編寫&…

AWTK 嵌入式Linux平臺實現多點觸控縮放旋轉以及觸點丟點問題解決

前言 最近涉及海圖的功能交互,多點觸摸又開始找麻煩。 在PC/Web平臺awtk是通過底層的sdl2庫來實現多點觸摸,但是在嵌入式Linux平臺,可能是考慮到性能原因,awtk并沒有采用sdl庫來做事件處理,而是自己實現一個awtk-lin…

Diffusion Planner:擴散模型重塑自動駕駛路徑規劃(ICLR‘25)

1. 概述 2025年2月14日,清華大學AIR智能產業研究院聯合毫末智行、中科院自動化所和香港中文大學團隊,在ICLR 2025會議上發布了Diffusion Planner——一種創新性的基于Diffusion Transformer的自動駕駛規劃模型架構。該系統聯合建模周車運動預測與自車行…

ESP32對接巴法云實現配網

目錄 序言準備工作巴法云注冊與使用Arduino準備 開發開始配網 序言 本文部分內容摘抄原創作者巴法云-做優秀的物聯網平臺 代碼有部分修改并測試運行正常 巴法云支持免費用戶通過開發對接實現各智能音箱設備語音控制智能家居設備,并有自己的App進行配網和控制&…

深度學習習題3

1.訓練神經網絡過程中,損失函數在一些時期(Epoch)不再減小, 原因可能是: 1.學習率太低 2.正則參數太大 3.卡在了局部最小值 A1 and 2 B. 2 and 3 C. 1 and 3 D. 都是 2.對于分類任務,我們不是將神經網絡中的隨機權重…

【EasyExcel】導出時添加頁眉頁腳

一、需求 使用 EasyExcel 導出時添加頁眉頁腳 二、添加頁眉頁腳的方法 通過配置WriteSheet或WriteTable對象來添加頁眉和頁腳。以下是具體實現步驟: 1. 創建自定義頁眉頁腳實現類 public class CustomFooterHandler implements SheetWriteHandler {private final…

c++ 類型轉換函數

測試代碼&#xff1a; void testTypeTransfer() { // 測試類型轉換函數class Distance {private:int meters;public:// 類型轉換函數&#xff0c;int表示轉化為int類型operator int() {std::cout << "調用了類型轉換函數" << endl;return meters; }Dist…

Conda 基本使用命令大全

Conda 基本使用命令大全 Conda 是一個開源的包管理和環境管理系統&#xff0c;廣泛用于 Python 開發、數據科學和機器學習。以下是 最常用的 Conda 命令&#xff0c;涵蓋環境管理、包安裝、配置等核心操作。 1. 環境管理 創建環境 conda create --name myenv # 創…

基于SpringBoot和PostGIS的OSM時空路網數據入庫實踐

目錄 前言 一、空間表的設計 1、屬性信息 2、空間表結構設計 二、路網數據入庫 1、實體類設計 2、路網數據寫入 3、pgAdmin數據查詢 三、總結 前言 在當今數字化時代&#xff0c;隨著信息技術的飛速發展&#xff0c;地理空間數據的應用范圍越來越廣泛&#xff0c;尤其是…

代付入賬是什么意思?怎么操作?

代付入賬就是指商戶委托銀行通過企業銀行賬戶向指定持卡人賬戶劃付款項&#xff0c;款項劃入指定賬戶即為入賬。 具體操作流程如下&#xff1a; 1. 向第三方支付公司指定賬戶充值加款。 2. 通過操作后臺提交代付銀行卡信息。 3. 第三方支付公司受理業務申請。 4. 第三方審…

數學復習筆記 27

前言 太難受了。因為一些事情。和朋友傾訴了一下&#xff0c;也沒啥用&#xff0c;幾年之后不知道自己再想到的時候&#xff0c;會怎么考慮呢。另外&#xff0c;筆記還是有框架一點比較好&#xff0c;這樣比較有邏輯感受。不然太亂了。這篇筆記是關于線代第五章&#xff0c;特…

第四十五天打卡

知識點回顧&#xff1a; tensorboard的發展歷史和原理 tensorboard的常見操作 tensorboard在cifar上的實戰&#xff1a;MLP和CNN模型 效果展示如下&#xff0c;很適合拿去組會匯報撐頁數&#xff1a; 作業&#xff1a;對resnet18在cifar10上采用微調策略下&#xff0c;用tensor…

使用高斯樸素貝葉斯算法對鳶尾花數據集進行分類

高斯樸素貝葉斯算法通常用于特征變量是連續變量&#xff0c;符合高素分布的情況。 使用高斯樸素貝葉斯算法對鳶尾花數據集進行分類 """ 使用高斯貝葉斯堆鳶尾花進行分類 """ #導入需要的庫 from sklearn.datasets import load_iris from skle…

【docker】Windows安裝docker

環境及工具&#xff08;點擊下載&#xff09; Docker Desktop Installer.exe &#xff08;windows 環境下運行docker的一款產品&#xff09; wsl_update_x64 &#xff08;Linux 內核包&#xff09; 前期準備 系統要求2&#xff1a; Windows 11&#xff1a;64 位系統&am…