2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

 流形sbz 2024-02-13 發(fā)布于甘肅

4.1 概述

4.1.1 存儲(chǔ)器分類

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

4.1.2 存儲(chǔ)器的層次結(jié)構(gòu)

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

4.2 主存儲(chǔ)器

4.2.1 概述

1. 主存的基本組成

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

2. 主存和CPU的聯(lián)系

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

3. 主存中存儲(chǔ)單元地址的分配

0x12345678如何在主存儲(chǔ)器中進(jìn)行存儲(chǔ)?

兩種模式:

  • 大端(存儲(chǔ))模式:是指數(shù)據(jù)的低位保存在內(nèi)存的高地址中,而數(shù)據(jù)的高位,保存在內(nèi)存的低地址中
  • 小端(存儲(chǔ))模式:是指數(shù)據(jù)的低位保存在內(nèi)存的低地址中,而數(shù)據(jù)的高位,保存在內(nèi)存的高地址中
計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

這邊建議使用C語(yǔ)言進(jìn)行理解;環(huán)境為:VS2019

擴(kuò)展

兩種方法判斷機(jī)器存儲(chǔ)是大端還是小端

/*** 返回1為小端*/int check_up(){ int i = 1;//0x00000001 內(nèi)存中表示地址為:0x01000000 char* p = (char*)&i; //01 return *p;}int main(){ int ret = check_up(); if (ret == 1) { printf('小端'); } else { printf('大端'); } return 0;}
int check_up(){    union un	{		char c;		int i;	}u;	u.i = 1;	return u.c;}int main(){	int ret = check_sys();	if (ret == 1)	{		printf('小端');	}	else	{		printf('大端');	}	return 0;}

一般x86架構(gòu)的計(jì)算機(jī)采用小端方式


假設(shè)一臺(tái)機(jī)器地址線為24根

尋址方式

尋址范圍

字節(jié)尋址

224=16MB

若字長(zhǎng)為16

尋址

8MW

若字長(zhǎng)為32

尋址

4MW

按字節(jié)尋址,默認(rèn)一個(gè)字為8bit(即字長(zhǎng)為8),所以范圍為:224=16MB(兆字節(jié))

按字尋址,我個(gè)人理解:把按字轉(zhuǎn)換為按字節(jié);因?yàn)樽珠L(zhǎng)為16,所以-為2個(gè)Byte,所以尋址范圍為:8MW(兆字 Word),也可以寫成:16MB,不過(guò)在這里 1W=2Byte;依此類推


4. 主存的技術(shù)指標(biāo)

  1. 存儲(chǔ)容量 主存 存放二進(jìn)制代碼的總位數(shù)
  2. 存儲(chǔ)速度
    1. 存取時(shí)間
      1. 訪問(wèn)時(shí)間
      2. 讀出時(shí)間
      3. 寫入時(shí)間
    1. 存取周期 // 連續(xù)兩次獨(dú)立的存儲(chǔ)器操作(讀或?qū)懀┧璧淖钚¢g隔時(shí)間
      1. 讀周期
      2. 寫周期
  1. 存儲(chǔ)器的帶寬

4.2.2 半導(dǎo)體存儲(chǔ)芯片簡(jiǎn)介

1. 基本結(jié)構(gòu)

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器
  • 讀寫控制線:將CPU的控制信號(hào)傳給讀寫電路
  • 地址線:將CPU需要的地址傳輸?shù)阶g碼驅(qū)動(dòng)中,然后由譯碼驅(qū)動(dòng)進(jìn)行翻譯,然后進(jìn)行尋址,是單向的
  • 地址線的數(shù)量決定了存儲(chǔ)單元的數(shù)量,假如有8根地址線:0000 0000 總共有幾種排列組合,即2的8次方。每一種組合都對(duì)應(yīng)一個(gè)存儲(chǔ)單元。
  • 數(shù)據(jù)線:將存儲(chǔ)體中的數(shù)據(jù)讀出,放入CPU;將CPU計(jì)算完畢的數(shù)據(jù)存入存儲(chǔ)體。是雙向的。
  • 數(shù)據(jù)線的數(shù)量決定了存儲(chǔ)單元的大小,即一個(gè)存儲(chǔ)單元能夠存多少數(shù)據(jù)。比如八根數(shù)據(jù)線0000 0000, 進(jìn)行一次讀取的方式。
  • 片選線:一個(gè)半導(dǎo)體存儲(chǔ)器是有多個(gè)芯片構(gòu)成的,所以在調(diào)用一個(gè)存儲(chǔ)器中的具體的存儲(chǔ)單元時(shí),確定是哪一個(gè)芯片

2. 計(jì)算芯片的容量

芯片容量 = 地址線的尋址能力 * 數(shù)據(jù)線的數(shù)量 = 存儲(chǔ)單元的數(shù)量 * 每一個(gè)存儲(chǔ)單元的容量

如下所示,根據(jù)地址線和數(shù)據(jù)線計(jì)算芯片的容量:2^10*4=1K*4...

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

3. 片選線的作用

  • 讓某一個(gè)芯片或者某些芯片同時(shí)進(jìn)行工作
計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器
  • 擴(kuò)充存儲(chǔ)單元容量:如圖,16K x 1位的芯片,總共有16K個(gè)存儲(chǔ)單元,每一個(gè)存儲(chǔ)單元有1位。若要存儲(chǔ)八位數(shù)據(jù),將八個(gè)存儲(chǔ)單元進(jìn)行并聯(lián),每一個(gè)存儲(chǔ)芯片存儲(chǔ)八位數(shù)據(jù)中的一位。每一次讀取數(shù)據(jù)都同時(shí)讀取八位芯片地一位,統(tǒng)一輸出就是八位。
計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

4. 譯碼驅(qū)動(dòng)方式

  • 線選法
計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器
  • 重合法
計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

4.2.3 隨機(jī)存取存儲(chǔ)器(RAM)

1. 靜態(tài)RAM(SRAM)

基本單元電路的構(gòu)成

存儲(chǔ)0和1信號(hào)的方式:靜態(tài)RAM保存的0和1的原理就是使用觸發(fā)器。T1~T4為4根管子構(gòu)成的雙穩(wěn)態(tài)觸發(fā)器,不易丟失或者是損耗,它在兩端存儲(chǔ)信息,左端保持輸入信號(hào)的非,右端保存原輸入信號(hào)。

移碼驅(qū)動(dòng)方式:重合法——分別通過(guò)行地址和列地址的聯(lián)合選中才能輸出,每一份存儲(chǔ)單元都對(duì)應(yīng)一個(gè)行列地址坐標(biāo)(行地址X,列地址Y)。

T5和T6是行地址選擇開關(guān):當(dāng)接通的時(shí)候,對(duì)應(yīng)的信號(hào)可以通過(guò)兩端分別經(jīng)過(guò)行選擇開關(guān)輸出到列選擇開關(guān)終止。

T7和T8是列地址選擇開關(guān):當(dāng)開關(guān)接通時(shí),允許數(shù)據(jù)從雙穩(wěn)態(tài)觸發(fā)器兩端輸出,經(jīng)過(guò)行地址選擇器,再通過(guò)列地址選擇器,實(shí)現(xiàn)最終的輸出。只有行、列被選中的某個(gè)單元存儲(chǔ)電路,在其行列通門同時(shí)被打開時(shí),才能進(jìn)行讀出信息和寫入信息的操作。

讀寫開關(guān),通過(guò)輸入對(duì)應(yīng)的讀寫控制信號(hào)選擇是否打開,通過(guò)數(shù)據(jù)。

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

總結(jié):一個(gè)SRAM的基本單元需要由8個(gè)電路基本元件構(gòu)成

靜態(tài)RAM的基本讀操作

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

靜態(tài)RAM的基本寫操作

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

靜態(tài)RAM舉例——Intel 2114

Intel 2114 外特性

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

在Intel 2114芯片中,WE為讀寫控制信號(hào),其中電平為寫,電平為讀。CS為片選信號(hào),只有CS信號(hào)是低電平的時(shí)候Intel 2114芯片才會(huì)選中,芯片左側(cè)A0-A9是10條地址線,可以看出芯片是1K的存儲(chǔ),右側(cè)是4根數(shù)據(jù)線,可以讀出和寫入4位信號(hào),因此可以看出,芯片的存儲(chǔ)容量為1K X 4位 。

Intel 2114 RAM 矩陣 (64 × 64) 讀

Intel 2114芯片 組成的 RAM 矩陣 (64 × 64) ,行地址有64個(gè),列地址一共分為4組,每一組一共有16列。如下圖,當(dāng)行地址線為000...0(64個(gè))時(shí),芯片的第一行被全部選中

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

當(dāng)列地址線為000...0(16個(gè))時(shí),每組中的第一列全部被選中,即0,16,32,48被選中

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

當(dāng) WE為讀信號(hào)(高電平),讀電路有效, CS片選信號(hào)為低電平時(shí),芯片被選中,行列交叉點(diǎn)地址的信號(hào)便通過(guò)電路通路被讀出來(lái)

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

Intel 2114 RAM 矩陣 (64 × 64) 寫

Intel 2114 RAM 矩陣的寫跟讀基本上是一致的,只是WE被換成了寫信號(hào)(低電平),從I/O數(shù)據(jù)線寫入數(shù)據(jù)

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

2. 動(dòng)態(tài)RAM(DRAM)

動(dòng)態(tài)RAM保存0和1的方法是電容,當(dāng)電容保存電荷時(shí)為1,不保存電荷(沒充電)時(shí)為0;

常見的動(dòng)態(tài)RAM基本單元電路有三管式單管式兩種,他們共同的特點(diǎn)是靠電容存儲(chǔ)電荷的原理來(lái)寄存信息。

三管式動(dòng)態(tài)RAM

電源電路

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

信息讀出

如果預(yù)充電信號(hào)有效,T4開關(guān)打開,V(DD)進(jìn)行充電,會(huì)對(duì)讀數(shù)據(jù)線進(jìn)行充電,讀數(shù)據(jù)線有效(變成高電平,表示為1),如果進(jìn)行讀出,讀選擇線有效,T2開關(guān)被打開。

如果C(g)當(dāng)中沒有保存有電容(存儲(chǔ)0),那么T1開關(guān)為低電平(表示為0),T1開關(guān)不會(huì)被打通,讀數(shù)據(jù)線仍然保持高電平,讀出的數(shù)據(jù)為1;如果C(g)電容當(dāng)中保存有電荷(存儲(chǔ)為1),那么T1開關(guān)為高電平(表示為1),此時(shí)T1和T2開關(guān)同時(shí)放電,使得讀數(shù)據(jù)線由高電平變成了低電平(表示為0),由這個(gè)過(guò)程,我們可以看出讀出的信息和原存的信息是相反的。(跟讀放大器有關(guān))

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

信息寫入

如果進(jìn)行寫入,寫選擇線有效,T3開關(guān)被打開,寫數(shù)據(jù)線會(huì)通過(guò)T3開關(guān)向C(g)進(jìn)行充電或者放電。如果寫選擇線是高電平,那么寫入的信號(hào)就是高電平,同樣,如果寫選擇線是低電平,寫入的便是低電平。因此寫入與輸入信息相同。

三管DRAM實(shí)例——Intel 1103 讀

三管動(dòng)態(tài) RAM 芯片 (Intel 1103) 一共有A0~A9 10個(gè) 地址線,因此芯片的存儲(chǔ)容量為1K; 每次讀出和寫入都為一位信號(hào),因此是1K x 1位容量的芯片。行地址經(jīng)過(guò)譯碼后,每一行都對(duì)應(yīng)了兩個(gè)控制信號(hào),一個(gè)是讀選擇信號(hào)和一個(gè)是寫選擇信號(hào),讀和寫分別使用不同的信號(hào)進(jìn)行控制。如圖,是對(duì)第0行第0列的地址進(jìn)行讀數(shù)據(jù)的電路圖,第0行第0列的數(shù)據(jù)經(jīng)過(guò)讀控制線進(jìn)入到讀寫控制電路進(jìn)行輸出。

刷新放大器:使用電容存儲(chǔ)電荷的原理表示0和1時(shí),電容會(huì)漏電,一段時(shí)間后,電容里邊的信號(hào)會(huì)消失,因此需要定期使用刷新放大器對(duì)電容信號(hào)進(jìn)行重寫。

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

三管DRAM實(shí)例——Intel 1103 寫

寫入信號(hào),如果行地址為11111,即行地址為31,那么第31行全部被選中,所有的寫選擇線有效,給出列地址為00001,那么第31行的第一列的原件為我們需要寫入數(shù)據(jù)的操作原元件。數(shù)據(jù)通過(guò)D端進(jìn)行輸入,經(jīng)過(guò)讀寫控制電路,通過(guò)寫數(shù)據(jù)線被寫入到指定原件的位置。

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

單管DRAM

電源電路

讀出:C(s)當(dāng)中如果保存了電荷(表示1),那么數(shù)據(jù)線讀出就是高電平。

寫入:單管動(dòng)態(tài)RAM中字線是控制線,如果字線充電,T開關(guān)被打開,C(s)可以進(jìn)行充電或者放電。

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

單管DRAM 4116 (16K × 1位)外特性

單管動(dòng)態(tài) RAM 4116 (16K × 1位)的7位行地址和列地址分兩次傳送,第一次傳送7位行地址,保存在行地址緩存器當(dāng)中,第二次傳送列地址,保存在列地址緩存器當(dāng)中;行地址和列地址分別經(jīng)過(guò)行譯碼列譯碼以后,選中給定的存儲(chǔ)單元進(jìn)行輸入和輸出。

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器
  • I/O緩存器,緩存了輸入和輸出數(shù)據(jù),連接I/O緩存器兩端的數(shù)據(jù)輸入和輸出寄存器可以控制數(shù)據(jù)的輸入和輸出。
  • 時(shí)序與控制:由行選中信號(hào)RAS、列選中信號(hào)CAS和讀寫信號(hào)WE組成,分別生成了行時(shí)鐘、列時(shí)鐘和寫時(shí)鐘,控制了芯片內(nèi)部的讀和寫操作。

單管DRAM實(shí)例——Intel 4116(16K x 1位)讀

下圖是單管動(dòng)態(tài) RAM 4116 (16K × 1位) 芯片讀圖示,注意:其中橫線電路為列選擇信號(hào),豎線電路為行選擇信號(hào)。

RAM 4116芯片中的讀放大器的工作原理為蹺蹺板電路,其左右兩側(cè)電平相反

如果行地址給出的是0111111(一個(gè)0,6個(gè)1),那么第63行被選中;然后給出列地址為7個(gè)0,那么第0列將被選中,第0列的列選信號(hào)有效,對(duì)應(yīng)開關(guān)被打開。數(shù)據(jù)就會(huì)經(jīng)過(guò)讀放大器的右側(cè)(0變成1),經(jīng)過(guò)列選開關(guān),送入到讀/寫線上,然后經(jīng)過(guò)I/O緩沖,通過(guò)輸出驅(qū)動(dòng)送出來(lái)。

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

單管DRAM實(shí)例——Intel 4116(16K x 1位)寫

下圖是單管動(dòng)態(tài) RAM 4116 (16K × 1位) 芯片寫圖示,跟讀數(shù)據(jù)的邏輯基本一致,數(shù)據(jù)經(jīng)過(guò)讀放大器時(shí)(1變成0),讀出時(shí)(0變成1),經(jīng)過(guò)兩次反向,使得讀寫數(shù)據(jù)保持正確。

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

總結(jié):假如你想往DRAM中寫入1,其實(shí)在DRAM中存的是0

讀出時(shí),你讀到的是1,其實(shí)在DRAM中存的是0

動(dòng)態(tài)RAM的刷新

為什么要刷新?

電容存儲(chǔ)電荷的原理表示0和1時(shí),電容會(huì)漏電,一段時(shí)間后,電容里邊的信號(hào)會(huì)消失,因此需要定期進(jìn)行動(dòng)態(tài)RAM刷新完成對(duì)電容信號(hào)的重寫。

動(dòng)態(tài)RAM刷新只跟行地址有關(guān),跟列地址無(wú)關(guān)。每次刷新的都是一行的數(shù)據(jù),而不是某一個(gè)存儲(chǔ)單元的數(shù)據(jù)。

集中刷新

所謂集中是刷新就是把刷新時(shí)間集中在一起進(jìn)行操作,如圖,動(dòng)態(tài)RAM在2ms內(nèi)對(duì)128行進(jìn)行集中式刷新,2ms內(nèi)一共是4000個(gè)存儲(chǔ)周期(1個(gè)存取周期為0.5微秒),前3872個(gè)周期可以供CPU或者I/O進(jìn)行讀寫操作,后128個(gè)周期專用于進(jìn)行集中式刷新,這段時(shí)間內(nèi)CPU或者I/O都不可以與動(dòng)態(tài)RAM進(jìn)行數(shù)據(jù)信息交換,因此這段時(shí)間也被稱為死區(qū)。以下便是死區(qū)比重的計(jì)算結(jié)果

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

分散刷新

分散式刷新就是把刷新時(shí)間分散放在一個(gè)讀寫周期內(nèi),如圖,T(c)為一個(gè)讀寫周期,t(M)為數(shù)據(jù)的讀寫操作,t(R)為刷新操作。分散刷新實(shí)際上把原來(lái)的讀寫周期時(shí)間進(jìn)行了延長(zhǎng),使得芯片的刷新頻率上升,芯片性能下降。唯一的優(yōu)點(diǎn)是,分散刷新沒有死區(qū)。

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

異步刷新(分散刷新與集中刷新相結(jié)合)

在2ms的周期內(nèi),芯片的總刷新行數(shù)為128行,因此,我們把這個(gè)時(shí)間分成128份,芯片每隔15.6us(微秒)就需要刷新一行。在15.6us時(shí)間內(nèi),刷新時(shí)間可以放在任何一個(gè)周期上,因此相當(dāng)于一個(gè)集中式刷新的方式,而相對(duì)于整個(gè)時(shí)間周期2ms來(lái)說(shuō),這種方式又是一種分散式刷新。

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

3. 動(dòng)態(tài)RAM和靜態(tài)RAM的比較

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器
  1. 動(dòng)態(tài)RAM的單元電路由一個(gè)晶體管和一個(gè)電容構(gòu)成,總體比較簡(jiǎn)單;靜態(tài)RAM比較復(fù)雜,每一個(gè)單元單路包含6個(gè)晶體管,所以集成度比較低。
  2. 從芯片引腳上來(lái)說(shuō),動(dòng)態(tài)RAM行地址和列地址可以分別進(jìn)行傳送,節(jié)約了引腳數(shù)量,減少了封裝體積。但是,動(dòng)態(tài)RAM行地址和列地址分別進(jìn)行傳送時(shí),消耗了執(zhí)行時(shí)間。
  3. 動(dòng)態(tài)RAM只是對(duì)電容進(jìn)行充電、放電和刷新,因此功耗比較低,而靜態(tài)RAM需要由6條晶體管協(xié)同工作,晶體管進(jìn)行工作時(shí)需要保持通電,因此所需功耗比較大。
  4. 動(dòng)態(tài)RAM對(duì)電容進(jìn)行充電需要消耗時(shí)間且行列地址需要傳送兩次,比靜態(tài)RAM使用觸發(fā)器的工作原理速度要慢。

因此,根據(jù)動(dòng)態(tài)RAM和靜態(tài)RAM的特點(diǎn),我們一般選擇動(dòng)態(tài)RAM作為主存,靜態(tài)RAM作為緩存Cache(加快速度)。

4.2.4 只讀存儲(chǔ)器(ROM)

1. 概述

只讀存儲(chǔ)器(Read-Only Memory,ROM)以非破壞性讀出方式工作,只能讀出無(wú)法寫入信息。信息一旦寫入后就固定下來(lái),即使切斷電源,信息也不會(huì)丟失,所以又稱為固定存儲(chǔ)器。

ROM所存數(shù)據(jù)通常是裝入整機(jī)前寫入的,整機(jī)工作過(guò)程中只能讀出,不像隨機(jī)存儲(chǔ)器能快速方便地改寫存儲(chǔ)內(nèi)容。ROM所存數(shù)據(jù)穩(wěn)定 ,斷電后所存數(shù)據(jù)也不會(huì)改變,并且結(jié)構(gòu)較簡(jiǎn)單,使用方便,因而常用于存儲(chǔ)各種固定程序和數(shù)據(jù)。

只讀存儲(chǔ)器的發(fā)展歷程

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

2. 只讀存器的類型

掩模ROM(MROM)——只可讀

這種ROM是由制造廠家利用一種掩膜技術(shù)寫入程序的,掩膜ROM制成后,用戶不能修改,根據(jù)制造工藝可以將它們分為MOS型雙極型兩種。MOS型ROM功耗小、速度慢,適用于一般微機(jī)系統(tǒng);而雙極型則速度快、功耗大,適用于速度較高的計(jì)算機(jī)系統(tǒng)。

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

上圖是掩膜型ROM構(gòu)成的原理圖,圖中是個(gè)簡(jiǎn)單的4x4位MOS(或雙極型)管ROM,采用單譯碼結(jié)構(gòu),A0、A1譯碼后可譯出四種狀態(tài),輸出4條選擇線,可分別選中4個(gè)單元,每個(gè)單元有4位輸出。圖中所示的矩陣中,在行和列的交點(diǎn),有的連有MOS管,有的沒有,這是工廠根據(jù)用戶提供的數(shù)據(jù)對(duì)芯片圖形(掩膜)進(jìn)行二次光刻所決定的,所以稱為掩膜ROM。

MOS型ROM, 行列選擇線交叉處有 MOS 管為“ 1 ” ,行列選擇線交叉處無(wú) MOS 管為“ 0

PROM(一次性編程)

可編程只讀存儲(chǔ)器 (英語(yǔ):Programmable read-only memory),縮寫為 PROM 或 FPROM,是一種電腦存儲(chǔ)記憶晶片,它允許使用稱為PROM編程器的硬件將數(shù)據(jù)寫入設(shè)備中。在PROM被編程后,它就只能專用那些數(shù)據(jù),并且不能被再編程,這種記憶體用作永久存放程式之用。通常會(huì)用于電子游戲機(jī)、或電子詞典這類可翻譯語(yǔ)言的產(chǎn)品之上。

采用破壞性編程,且只能編程一次,如果編程有錯(cuò)誤,只能重新購(gòu)買芯片。

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

EPROM(多次行編程)

EPROM采用N型溝道浮動(dòng)?xùn)臡OS電路,需要保存0,D端加正電壓,形成浮動(dòng)?xùn)牛枰4?,D端不加正電壓,不形成浮動(dòng)?xùn)拧?/p>

編程完成后,EPROM只能用強(qiáng)紫外線照射來(lái)擦除。通過(guò)封裝頂部能看見硅片的透明窗口,很容易識(shí)別EPROM,這個(gè)窗口同時(shí)用來(lái)進(jìn)行紫外線擦除。可以將EPROM的玻璃窗對(duì)準(zhǔn)陽(yáng)光直射一段時(shí)間就可以擦除。

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

EEPROM(多次性編程)

EEPROM (Electrically Erasable Programmable read only memory)是指帶電可擦可編程只讀存儲(chǔ)器。是一種掉電后數(shù)據(jù)不丟失的存儲(chǔ)芯片。 EEPROM 可以在電腦上或?qū)S迷O(shè)備上擦除已有信息,重新編程。一般用在即插即用。

常用在接口卡中,用來(lái)存放硬件設(shè)置數(shù)據(jù)。

也常用在防止軟件非法拷貝的'硬件鎖'上面。

EEPROM的特點(diǎn)

  • 電可擦寫
  • 局部擦寫
  • 全部擦寫

Flash Memory(閃速型存儲(chǔ)器)

快閃存儲(chǔ)器(英語(yǔ):flash memory),是一種電子式可清除程序化只讀存儲(chǔ)器的形式,允許在操作中被多次擦或?qū)懙拇鎯?chǔ)器。這種科技主要用于一般性數(shù)據(jù)存儲(chǔ),以及在計(jì)算機(jī)與其他數(shù)字產(chǎn)品間交換傳輸數(shù)據(jù),如儲(chǔ)存卡與U盤。

閃存是一種非易失性存儲(chǔ)器,即斷電數(shù)據(jù)也不會(huì)丟失。因?yàn)殚W存不像RAM(隨機(jī)存取存儲(chǔ)器)一樣以字節(jié)為單位改寫數(shù)據(jù),因此不能取代RAM。

閃存卡(Flash Card)是利用閃存(Flash Memory)技術(shù)達(dá)到存儲(chǔ)電子信息的存儲(chǔ)器,一般應(yīng)用在數(shù)碼相機(jī),掌上電腦,MP3等小型數(shù)碼產(chǎn)品中作為存儲(chǔ)介質(zhì),所以樣子小巧,有如一張卡片,所以稱之為閃存卡。

3. 幾種只讀存儲(chǔ)器簡(jiǎn)單對(duì)比

  • EPROM 價(jià)格便宜 集成度高——多次編程,紫外線擦除
  • EEPROM 電可擦洗重寫——局部擦除和全部擦除
  • Flash Memory 比 EEPROM快 具備 RAM 功能

4.2.5 存儲(chǔ)器與CPU的連接

1. 存儲(chǔ)器容量的擴(kuò)展

位擴(kuò)展——增加存儲(chǔ)字長(zhǎng)

位擴(kuò)展的目的是為了增加存儲(chǔ)字的字長(zhǎng)。

假設(shè)現(xiàn)在有1K(1024個(gè))*4位的存儲(chǔ)芯片(容量為4096bit)若干,要想構(gòu)成一個(gè)1K*8位的存儲(chǔ)器,我們可以使用兩片1K*4位的存儲(chǔ)芯片來(lái)構(gòu)成,如下圖

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

我們通過(guò)片選信號(hào)CS同時(shí)選中兩片存儲(chǔ)芯片,同時(shí)進(jìn)行8位數(shù)據(jù)的讀出和寫入,例如,每片芯片有10跟地址線,4跟數(shù)據(jù)線,它們的連接方式如下:

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

對(duì)于如上例子,位擴(kuò)展的關(guān)鍵就是將兩個(gè)存儲(chǔ)芯片當(dāng)成一個(gè)存儲(chǔ)芯片來(lái)用,讓兩個(gè)存儲(chǔ)芯片同時(shí)工作,同時(shí)被選中,同時(shí)做讀操作,同時(shí)做寫操作,要想保證同時(shí),就是把兩個(gè)芯片的片選CS,用相同的信號(hào)進(jìn)行連接。

字?jǐn)U展——增加存儲(chǔ)字的數(shù)量

假設(shè)現(xiàn)在有1K*8位的存儲(chǔ)芯片若干,要想構(gòu)成一個(gè)2K*8位的存儲(chǔ)器,我們可以使用兩片1K*8位的存儲(chǔ)芯片來(lái)構(gòu)成,如下圖

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

每一個(gè)存儲(chǔ)芯片的容量是1K*8位,我們要構(gòu)成一個(gè)2K(11位2進(jìn)制位)*8的存儲(chǔ)器,而存儲(chǔ)芯片的每一片的容量是1K(10位二進(jìn)制位),因此我們需要使用兩片1K*8位的存儲(chǔ)芯片來(lái)構(gòu)成,如圖:

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

總共有11條地址線,對(duì)于A10,我們將它當(dāng)成片選信號(hào)線,當(dāng)A10=0時(shí),片選選中左邊的存儲(chǔ)芯片工作,右邊不工作,當(dāng)A10=1時(shí),通過(guò)一個(gè)取反,片選選擇右邊的芯片工作,這從外部看來(lái)就是從 0 0000000000 ~ 1 1111111111 剛好是從0~2047共2K個(gè)存儲(chǔ)單元,每一個(gè)存儲(chǔ)單元存放8位的二進(jìn)制代碼。

字、位擴(kuò)展

假設(shè)現(xiàn)在有1K*4位的存儲(chǔ)芯片若干,要組成4K*8位的存儲(chǔ)器,我們可以使用8片1K*4位的存儲(chǔ)芯片來(lái)構(gòu)成。首先拿兩片,來(lái)構(gòu)成1K*8位這樣一組芯片,接著,我們需要4組來(lái)構(gòu)成4K*8位的存儲(chǔ)器。

那么如何進(jìn)行連接呢?

其實(shí)就是將上述兩種方法進(jìn)行綜合,4K*8的存儲(chǔ)器,4K(即12根地址線),8bit,就是8根數(shù)據(jù)線,1K*4bit的芯片有需要10根地址線,也就是說(shuō)系統(tǒng)給出的從A0-A11 12根地址線,其中的10根A0-A9是直接送到芯片當(dāng)中構(gòu)成1K*8的一個(gè)小的存儲(chǔ)器,剩余的2根地址線(4個(gè)地址)A11-A10,我們用來(lái)做片選信號(hào),如下圖

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

4K的空間我們分配到了4個(gè)存儲(chǔ)器當(dāng)中,每個(gè)存儲(chǔ)器包含了兩片1K*4bit的存儲(chǔ)芯片,

  • 第一個(gè)存儲(chǔ)器的范圍為 00 0...0(10個(gè)0)~00 1...1(10個(gè)1)
  • 第二個(gè)存儲(chǔ)器的范圍為 01 0...0(10個(gè)0)~01 1...1(10個(gè)1)
  • 第三個(gè)存儲(chǔ)器的范圍為 10 0...0(10個(gè)0)~10 1...1(10個(gè)1)
  • 第四個(gè)存儲(chǔ)器的范圍為 11 0...0(10個(gè)0)~11 1...1(10個(gè)1)

由A11和A10來(lái)判斷要訪問(wèn)的地址在哪一個(gè)存儲(chǔ)器當(dāng)中,我們采用譯碼器進(jìn)行譯碼,當(dāng)

  • A11 =0 A10=0 選擇第一個(gè)存儲(chǔ)器
  • A11 =0 A10=1 選擇第二個(gè)存儲(chǔ)器
  • A11 =1 A10=0 選擇第三個(gè)存儲(chǔ)器
  • A11 =1 A10=1 選擇第四個(gè)存儲(chǔ)器

2. 和CPU連接

  1. 地址線的連接:由于CPU地址線一般多于存儲(chǔ)芯片地址線,因此一般CPU低位地址線與存儲(chǔ)芯片相連,高位地址線用作控制信號(hào)。
  2. 數(shù)據(jù)線的連接
  3. 讀/寫命令線的連接:CPU讀/寫命令線一般可直接與存儲(chǔ)芯片的讀/寫控制端相連,通常高電平為讀,低電平為寫。
  4. 片選線的連接:由于存儲(chǔ)器是由許多存儲(chǔ)芯片組成的,存儲(chǔ)芯片的片選控制線和CPU的高位地址有關(guān),CPU的高位地址線經(jīng)過(guò)譯碼器譯碼,和訪存控制信號(hào)共同作用,產(chǎn)生存儲(chǔ)芯片的片選信號(hào)。訪存控制信號(hào),例如,低電平有效時(shí),訪問(wèn)存儲(chǔ)器;高電平有效時(shí),訪問(wèn)I/O。
  5. 合理選擇存儲(chǔ)芯片:系統(tǒng)程序區(qū)應(yīng)該選擇ROM ,用戶程序區(qū)選擇RAM。
  6. 其他,比如時(shí)序、負(fù)載等

3. 例題

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

解題步驟:

① 寫出對(duì)應(yīng)的二進(jìn)制地址碼

CPU有16根地址線,說(shuō)明芯片的尋址范圍是16 x 16 = 64 K;MREO作為訪存控制信號(hào),低電平時(shí)訪問(wèn)存儲(chǔ)器(頂方的橫線表示),高電平時(shí)訪問(wèn)I/O;

系統(tǒng)緩存區(qū):6000H~67FFH換算成地址范圍 ——> 67FFH - 6000H= (67FFH+1-6000H) = 800H = 8 x 16 x 16 = 2 x 2^10 = 2K;

用戶緩存區(qū):6800H~6BFFH換算成地址范圍 ——> 6BFFH - 6800H= (6BFFH+1-6800H) = 400H = 4 x 16 x 16 = 1 x 2^10 = 1K;

以上為10進(jìn)制的換算,我們換成對(duì)應(yīng)的二進(jìn)制表示為

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

② 確定芯片的數(shù)量及類型

根據(jù)地址范圍的容量以及該范圍在計(jì)算機(jī)中的作用,選擇存儲(chǔ)芯片。

根據(jù)6000H~67FFH為系統(tǒng)程序區(qū)的范圍,應(yīng)選擇1片2K x 8 位的ROM,若選擇其他的ROM,都超出了2K x 8 位的系統(tǒng)程序區(qū)范圍。

根據(jù)6800H~6BFFH為用戶程序區(qū)的范圍,選2片 1K x 4位的RAM芯片正好滿足1K x 8位的用戶程序區(qū)要求

③ 分配地址線

將CPU的低11位地址A10~A0與2K x 8 位的ROM地址線相連;將CPU的低10位地址A9~A0與2片 1K x 4位的RAM地址線相連。剩下的高位地址與訪存控制信號(hào)MREQ共同產(chǎn)生存儲(chǔ)芯片的片選信號(hào)。

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

④ 確定片選信號(hào)

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器
計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

4.2.6 存儲(chǔ)器的校驗(yàn)

1. 為什么要進(jìn)行校驗(yàn)?

以內(nèi)存為例,內(nèi)存是電子設(shè)備,信息保存在電容當(dāng)中,若采用靜態(tài)RAM,則是保存在四管的觸發(fā)器當(dāng)中。若內(nèi)存所處的電磁環(huán)境比較復(fù)雜,或在空間環(huán)境下受到帶電粒子的打擊,可能造成電容的充放電或觸發(fā)器的翻轉(zhuǎn),存在在存儲(chǔ)器的信息可能會(huì)出錯(cuò)。

2. 編碼的最小距離

編碼的檢測(cè)能力和糾錯(cuò)能力與任意兩組合法代碼之間二進(jìn)制位的最少差異數(shù)有關(guān)。

先解釋什么是差異數(shù)

假設(shè)有2個(gè)二進(jìn)制數(shù):0011、0101;

我想把0011改成0101,我只要把0011中的第2位和第3位改成 1 和 0 就行

所以這兩個(gè)數(shù)之間的差異數(shù)為 2

解釋:

合法集合 {000 , 001 , 010 , 011 , 100 , 101 , 110 , 111} ,在此集合中,改變?nèi)我庖粋€(gè)代碼,比如改為001,001在合法集合中,所以不論改哪一個(gè)代碼,總能在集合中找到對(duì)應(yīng)的合法代碼,因此這組合法代碼,最少差異數(shù)為1,不能檢測(cè)出錯(cuò)誤,即 檢0位錯(cuò),糾0位錯(cuò)。

合法集合 {000 , 011 , 101 ,110},在此集合中,改變?nèi)我庖粋€(gè)代碼,比如改為001,001不在合法集合中,那么可以檢測(cè)出錯(cuò)誤,但是不能確定是集合中哪一個(gè)代碼發(fā)生了錯(cuò)誤,因?yàn)樗械暮戏ùa改變一位后,都可以變成001,所有兩組合法代碼之間二進(jìn)制位的最少差異數(shù)為2時(shí), 檢1位錯(cuò),糾0位錯(cuò)。

合法集合 {000 , 111} ,在合法集合中,改變?nèi)我庖粋€(gè)代碼,比如改為001,001不在合法集合中,那么可以檢測(cè)出錯(cuò)誤,而且根據(jù)錯(cuò)誤率錯(cuò)一位的機(jī)率為90%的統(tǒng)計(jì),我們認(rèn)為是代碼000錯(cuò)誤了一位,因此,兩組合法代碼之間二進(jìn)制位的最少差異數(shù)為3時(shí), 檢1位錯(cuò),糾1位錯(cuò) 。

檢錯(cuò)糾錯(cuò)位數(shù)和碼距之間的關(guān)系

L - 1 = D + C (D>=C,檢測(cè)錯(cuò)誤的位數(shù)總是大于等于糾正錯(cuò)誤的位數(shù))

  • L ——> 編碼的最小距離
  • D ——> 檢測(cè)錯(cuò)誤的位數(shù)
  • C ——> 糾正錯(cuò)誤的位數(shù)

因此,我們可以知道,如果想要檢1位錯(cuò),糾1位錯(cuò),編碼的最小距離為3。

3. 漢明碼校驗(yàn)

奇偶校驗(yàn)

所謂的奇偶校驗(yàn),就是在原校驗(yàn)數(shù)據(jù)上添加一位1或者0,使數(shù)據(jù)中的1的個(gè)數(shù)為奇數(shù)個(gè)或者偶數(shù)個(gè)。為奇數(shù)個(gè)為奇校驗(yàn),為偶數(shù)為偶校驗(yàn)。

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

以偶校驗(yàn)為例,上圖,添加一位1后,使校驗(yàn)數(shù)據(jù)中的1的個(gè)數(shù)為偶數(shù)個(gè),如果接收的結(jié)果1的位數(shù)不為偶數(shù),那么可以檢驗(yàn)出原數(shù)據(jù)出現(xiàn)了錯(cuò)誤。

另外,為了更進(jìn)一步細(xì)分錯(cuò)誤校驗(yàn),我們可以把原校驗(yàn)數(shù)據(jù)進(jìn)行分組,如上,我們把校驗(yàn)數(shù)據(jù)劃分為2組,分別添加校驗(yàn)位。

漢明碼計(jì)算

漢明碼校驗(yàn)是一種非劃分方式(組與組之間是有重疊的)

漢明碼的目的是能夠糾正一位誤碼( 漢明碼默認(rèn)一串?dāng)?shù)據(jù)只錯(cuò)一位)。假設(shè)信息碼共有 n 位,漢明碼共有 r 位,那么總共的碼長(zhǎng)為 n + r 位。為能檢測(cè)出 n + r 位編碼中其中一位的錯(cuò)誤,漢明碼必須能夠表示至少 n + r + 1 種狀態(tài),其中 n + r 種表示 n + r 位編碼中有一位錯(cuò)誤,另外還需要一種來(lái)表示整個(gè)編碼正確無(wú)誤。則漢明碼的長(zhǎng)度需要滿足下列關(guān)系:

2^r >= n + r + 1

信息碼 n 位,漢明碼 r 位,總共碼長(zhǎng) n + r

漢明碼位置

漢明碼的校驗(yàn)碼的位置必須是在2^n位置(n從0開始,分別代表從右邊數(shù)起的第1,2,4,8,16...),信息碼也就是在非2^n位置。

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

例如:對(duì)1,2,3,4,5,6,7進(jìn)行漢明碼校驗(yàn),按照二進(jìn)制編碼,如果二進(jìn)制碼的第一位為1,分為第一組,二進(jìn)制編碼的第二位為1,分為第二組,以此類推...

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

分完組后,校驗(yàn)碼的位置必須是在 2^n的位置,我們知道最大數(shù)7的二進(jìn)制碼為111,因此,根據(jù)漢明碼長(zhǎng)度需要滿足的關(guān)系式:2^r >= 3 + r + 1;可以求得校驗(yàn)碼的最小長(zhǎng)度為3位;

例:

0101 按 “偶校驗(yàn)” 配置的漢明碼

n = 4

根據(jù) 2^r n + r + 1

得 r = 3;即校驗(yàn)碼有3位

漢明碼排序如下:

我們知道,校驗(yàn)碼有3位,先在1,2,4位占據(jù)校驗(yàn)碼的3個(gè)位置,空余的位置把需要校驗(yàn)的二進(jìn)制碼依次填充上去。先看第一個(gè)校驗(yàn)碼,第一組校驗(yàn)1,3,5,7位,排序中,3,5,7的位置為011,根據(jù)偶校驗(yàn)原則,我們只需在前邊補(bǔ)0就可以,那么0就是第一個(gè)校驗(yàn)碼。根據(jù)此方法,可以得出后兩個(gè)校驗(yàn)碼為10;

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

因此,可以求得0101 的漢明碼為 01 0 0 101

漢明碼糾錯(cuò)

已知接收到的漢明碼為 0100111 , (按配偶原則配置)試問(wèn)要求傳送的信息是什么 ?

糾錯(cuò)過(guò)程如下:

7位漢明碼,數(shù)據(jù)碼占4個(gè),所以校驗(yàn)碼的個(gè)數(shù)為3,一組一個(gè)校驗(yàn)碼,即分組為3;

根據(jù)偶校驗(yàn)的原則,我們分別對(duì)每一位的信息進(jìn)行異或運(yùn)算:

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

這邊就有一個(gè)問(wèn)題:為什么這邊算出來(lái)來(lái)的校驗(yàn)碼是011,但是如果直接看漢明碼的第0、1、4位為:010?

解釋:

校驗(yàn)位也可能出錯(cuò),如果傳送的信息就是錯(cuò)的,那么校驗(yàn)位也會(huì)出錯(cuò);

P1:0、0、1、1 符合偶校驗(yàn) = 0

P2:1、0、1、1 不符合偶校驗(yàn) = 1

P3:0、1、1、1 不符合偶校驗(yàn) = 1

(或者將4個(gè)數(shù)字進(jìn)行異或一樣的效果)

校驗(yàn)碼是011,也就是說(shuō),第二組和第三組存在錯(cuò)誤,第二組和第三組共有的數(shù)據(jù)是第6位的數(shù)據(jù), 可糾正為 01001 0 1;也可以將3位校驗(yàn)碼排列成:110,轉(zhuǎn)換為十進(jìn)制為6,所以是第6位出錯(cuò)

故要傳送的信息為 01 0 0 101 ;去除校驗(yàn)位,即為0101

準(zhǔn)確來(lái)說(shuō)應(yīng)該是 01 0 1 101;校驗(yàn)位可不糾錯(cuò)


4.2.7 提高訪存速度的措施

1. 單字體系統(tǒng)

原假設(shè)存儲(chǔ)字長(zhǎng)等于機(jī)器字長(zhǎng),也就是說(shuō)CPU一次從存儲(chǔ)器當(dāng)中只能取出一條指令(與機(jī)器字長(zhǎng)相等的數(shù)據(jù))

單體多字系統(tǒng):把存儲(chǔ)器的存儲(chǔ)字長(zhǎng)加長(zhǎng)(增加存儲(chǔ)器的帶寬),比如,CPU為16位,存儲(chǔ)字長(zhǎng)我們可以設(shè)計(jì)成64位,CPU每一次訪問(wèn)存儲(chǔ)器,都可以訪問(wèn)出4個(gè)機(jī)器字(4條指令),下一次再取指令時(shí),就可以從數(shù)據(jù)寄存器當(dāng)中讀取指令。

單體多字系統(tǒng)的缺陷:

  1. CPU如果需要存儲(chǔ)16位數(shù)據(jù),需要先把數(shù)據(jù)放在單字長(zhǎng)寄存器中,再放入數(shù)據(jù)寄存器中,然后再存儲(chǔ)到存儲(chǔ)體中,如果想要避免無(wú)關(guān)的48位數(shù)據(jù)被修改,還要設(shè)計(jì)更復(fù)雜的硬件邏輯。
  2. 如果CPU讀取的指令不是連續(xù)的存儲(chǔ)的指令,那么取出的多余指令就是用不到的指令。
計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

2. 單體改進(jìn)->多體并行系統(tǒng)

高位交叉——用于存儲(chǔ)容量拓展

順序?qū)Υ鎯?chǔ)體進(jìn)行編碼(編完第一個(gè)存儲(chǔ)體,再編第二個(gè)存儲(chǔ)體),前兩位00為存儲(chǔ)體的編號(hào),后四位為存儲(chǔ)體中的地址的編號(hào),每一個(gè)存儲(chǔ)體都有單獨(dú)的數(shù)據(jù)寄存器和地址寄存器,能獨(dú)立處理讀寫信號(hào),從而達(dá)到4個(gè)存儲(chǔ)體并行工作的效果。

不足:如果按序存儲(chǔ)和按序讀取,那么4個(gè)存儲(chǔ)體中,可能存在有一個(gè)存儲(chǔ)體非常繁忙,而其他幾個(gè)存儲(chǔ)體非常空閑的情況。

高位交叉的原理就是上文中提到的:存儲(chǔ)器容量擴(kuò)展中字、位擴(kuò)展

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

低位交叉——用于帶寬訪問(wèn)速度提高

對(duì)高位交叉進(jìn)行改進(jìn),橫向?qū)Υ鎯?chǔ)體進(jìn)行編碼(第一個(gè)存儲(chǔ)體和第二個(gè)存儲(chǔ)體輪流進(jìn)行編碼),前四位為存儲(chǔ)體中的地址的編號(hào),后兩位為存儲(chǔ)體的地址。

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

低位交叉的特點(diǎn): 在不改變存取周期的前提下,增加存儲(chǔ)器的帶寬

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

上圖顯示了,在一個(gè)訪存周期內(nèi),可分為4個(gè)小訪存時(shí)間,每個(gè)小的訪存時(shí)間可以分別控制一個(gè)存儲(chǔ)體進(jìn)行讀寫。

設(shè)四體低位交叉存儲(chǔ)器,存取周期為 T,總線傳輸周期為 τ ,為實(shí)現(xiàn)流水線方式存取,應(yīng)滿足 T = 4 τ 。

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

連續(xù)讀取 4 個(gè)字所需的時(shí)間為 T + (4 - 1) τ

總結(jié):采用單體多字系統(tǒng)提高訪存速度辦法的前提是, 指令和數(shù)據(jù)在主存內(nèi)必須是連續(xù)存放的,一旦遇到轉(zhuǎn)移指令、或者操作數(shù)據(jù)不能連續(xù)存放,這種方法的效果就不明顯。

3. 高性能存儲(chǔ)芯片

SDRAM(同步DRAM)

在系統(tǒng)時(shí)鐘的控制下進(jìn)行讀出和寫入—— CPU 無(wú)須等待

RDRAM

Rambus 開發(fā),主要解決 存儲(chǔ)器帶寬 問(wèn)題

帶 Cache 的 DRAM

在 DRAM 的芯片內(nèi) 集成 了一個(gè)由 SRAM 組成的 Cache ,有利于 猝發(fā)式讀取 (連續(xù)的存儲(chǔ)單元進(jìn)行讀取)


4.3 高速緩沖存儲(chǔ)器

4.3.1 概述

為什么要使用高速緩沖存儲(chǔ)器?

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

使用高速緩沖存儲(chǔ)器,需要遵循程序訪問(wèn)的局部性原理,即要求CPU使用的指令,大部分都能夠在緩存中找到。

三種不同類型的局部性:

  1. 時(shí)間局部性(Temporal Locality):如果一個(gè)信息項(xiàng)正在被訪問(wèn),那么在近期它很可能還會(huì)被再次訪問(wèn)。 程序循環(huán)、堆棧等是產(chǎn)生時(shí)間局部性的原因。
  2. 空間局部性(Spatial Locality):在最近的將來(lái)將用到的信息很可能與現(xiàn)在正在使用的信息在空間地址上是臨近的。
  3. 順序局部性(Order Locality):在典型程序中,除轉(zhuǎn)移類指令外,大部分指令是順序進(jìn)行的。順序執(zhí)行和非順序執(zhí)行的比例大致是5:1。此外,對(duì)大型數(shù)組訪問(wèn)也是順序的。 指令的順序執(zhí)行、數(shù)組的連續(xù)存放等是產(chǎn)生順序局部性的原因。

4.3.2 Cache的工作原理

主存與緩存按塊存儲(chǔ),塊的大小相同,塊內(nèi)陸址相同。

cache的結(jié)構(gòu)其實(shí)和內(nèi)存的結(jié)構(gòu)類似,也包含地址和內(nèi)容,只是cache的內(nèi)容除了存的數(shù)據(jù)(data)之外,還包含存的數(shù)據(jù)的物理內(nèi)存的地址信息(tag),因?yàn)镃PU發(fā)出的尋址信息都是針對(duì)物理內(nèi)存發(fā)出的,所以cache中除了要保存數(shù)據(jù)信息之外,還要保存數(shù)據(jù)對(duì)應(yīng)的地址,這樣才能在cache中根據(jù)物理內(nèi)存的地址信息查找物理內(nèi)存中對(duì)應(yīng)的數(shù)據(jù)。(當(dāng)然為了加快尋找速度,cache中一般還包含一個(gè)有效位(valid),用來(lái)標(biāo)記這個(gè)cache line是否保存著有效的數(shù)據(jù))。一個(gè)tag和它對(duì)應(yīng)的數(shù)據(jù)組成的一行稱為一個(gè)cache line。如下圖所示,下表中的一行就是一個(gè)cache line。

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

知道了cache的結(jié)構(gòu)之后,如何在cache中去尋找對(duì)應(yīng)的數(shù)據(jù)呢?簡(jiǎn)單起見,我們先選擇直接映射的cache組成方式(參見下文)進(jìn)行下文的分析。

首先對(duì)于一段物理內(nèi)存(block),該物理內(nèi)存上的每個(gè)字節(jié)的地址劃分為以下幾段:

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

這樣的話物理內(nèi)存中的數(shù)據(jù)到cache的映射關(guān)系如下圖所示:

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

上圖四的映射原則就是:根據(jù)物理地址的中間三位(index字段)來(lái)定位當(dāng)前數(shù)據(jù)應(yīng)該在cache的哪一行,把物理地址的tag字段和該地址對(duì)應(yīng)的內(nèi)容放入對(duì)應(yīng)的cache line的tag字段和data字段,并把相應(yīng)的valid位置置為1。那么在之后進(jìn)行cache尋找的時(shí)候就可以根據(jù)cache line的tag字段來(lái)辨認(rèn)當(dāng)前l(fā)ine中的數(shù)據(jù)是數(shù)據(jù)哪個(gè)block的。

上圖四中的地址00 000 00~11 111 11按照?qǐng)D三的原則進(jìn)行地址劃分:地址的最高兩位為Tag字段;中間三位為index字段;最低兩位為Block Offset 字段。

由于Block Offset是兩位,也就是一個(gè)block的大小是22=4個(gè)字節(jié)的數(shù)據(jù),也就是一個(gè)cache line的data字段包含4個(gè)字節(jié)的數(shù)據(jù);index為3位,說(shuō)明cache共包含23=8個(gè)組(對(duì)于直接映射的cache,也稱為8個(gè)行);很明顯,cache的一個(gè)行中只能存儲(chǔ)1 塊(Block )=4字節(jié)的數(shù)據(jù),但是按照?qǐng)D四的映射方式,會(huì)有2^(tag位數(shù)) = 2^2 = 4塊的數(shù)映射到同一個(gè)行,此時(shí)通過(guò)Tag字段的比較來(lái)辨別是不是我們要取數(shù)據(jù)的地址,如果不是的話,也就是發(fā)生了cache的缺失。

如圖四的Block 0和Block 1的index字段都是000,按照上面的理論它們都應(yīng)該映射到第 000=0行(這兒的行也就是組,因?yàn)閳D四是直接映射的cache),但是現(xiàn)在第0行的內(nèi)容是K、L、M、N,也就是Block 1的內(nèi)容,為什么呢?仔細(xì)看該cache line的tag=01,映射到第0行的塊只有Block 1的tag字段=01,所以可以得知此時(shí)該cache line中存儲(chǔ)的數(shù)據(jù)是Block 1的數(shù)據(jù),此時(shí)如果CPU發(fā)出的訪存請(qǐng)求是訪問(wèn)Block 0 的話,也就是發(fā)生了缺失。此時(shí)進(jìn)一步定量分析的話,共有4個(gè)數(shù)據(jù)塊競(jìng)爭(zhēng)使用cache 第0行的位置,也就是說(shuō)cache的命中率為25%。

上面的過(guò)程總結(jié)起來(lái)就是:

物理內(nèi)存的索引字段(Index)選擇cache 的行,通過(guò)對(duì)比物理內(nèi)存和cache line的Tag來(lái)判斷是否命中。塊偏移字段(Block Offset)可以從cache line的數(shù)據(jù)塊中選擇期望數(shù)據(jù)。注意在這個(gè)過(guò)程中cache的index是不占空間的,它就類似于物理內(nèi)存的地址,對(duì)于物理內(nèi)存來(lái)說(shuō)是通過(guò)地址去尋找數(shù)據(jù),對(duì)于cache來(lái)說(shuō),是通過(guò)index來(lái)找到對(duì)應(yīng)的cache line,或者更通俗的講就是:cache line的地址對(duì)應(yīng)的就是物理內(nèi)存的index字段。

此時(shí)該cache的容量計(jì)算如下:每一個(gè)cache line的數(shù)據(jù)字段占4個(gè)字節(jié),共23=8行,所以數(shù)據(jù)占據(jù)4×8=32個(gè)字節(jié),一個(gè)cache line中tag字段和valid位占2+1=3bit,整個(gè)cache的tag+valid=3bit×8行=24bit=3Byte,通常情況下我們都是以cache中數(shù)據(jù)部分占的空間表示cache的容量,也就是32字節(jié),但是實(shí)際上,它還額外多占用了3字節(jié)的存儲(chǔ)空間。

上面一大段廢話說(shuō)的就幾下幾點(diǎn):

  • tag:決定塊(block)的個(gè)數(shù)
  • index:決定存在Cache哪一行(Cache line)
  • offset:決定Cache中data的大?。ㄗ止?jié)為單位)
  • index+offset:決定每個(gè)塊有多少個(gè)數(shù)據(jù)

1. Cache的命中率

主存和緩存 按塊存儲(chǔ)塊的大小相同;緩存共有 C 塊,主存共有 M 塊 ,主存 M 塊的數(shù)量>>(遠(yuǎn)遠(yuǎn)大于) 緩存 C塊的數(shù)量

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

命中: 主存塊 調(diào)入 緩存,主存塊與緩存塊 建立 了對(duì)應(yīng)關(guān)系,用 標(biāo)記記錄 與某緩存塊建立了對(duì)應(yīng)關(guān)系的 主存塊號(hào)

未命中: 主存塊與緩存塊 未建立 對(duì)應(yīng)關(guān)系,主存塊 未調(diào)入 緩存

Cache 的命中率 :CPU 欲訪問(wèn)的信息在 Cache 中的 比率 ,命中率 與 Cache 的 容量塊長(zhǎng) 有關(guān) ,一般每塊可取 4 ~ 8 個(gè)字 , 塊長(zhǎng)取一個(gè)存取周期內(nèi)從主存調(diào)出的信息長(zhǎng)度

2. Cache –主存系統(tǒng)的效率

效率 e 與 命中率 有關(guān)

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

設(shè) Cache 命中率 h 訪問(wèn) Cache 的時(shí)間為 t c , 訪問(wèn) 主存 的時(shí)間為 t m

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

4.3.3 Cache的基本結(jié)構(gòu)

將主存地址映射到緩存中稱為地址映射,將主存地址變換成緩存地址稱為地址變換,當(dāng)新的主存塊需要調(diào)入緩存中,而它的可用位置又被占用時(shí),需根據(jù)替換算法解決調(diào)入問(wèn)題。

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

4.3.4 Cache的讀寫操作

讀操作

如果命中緩存,直接從緩存中獲取信息,如果沒命中,從主存中查找信息。如果緩存Cache滿,根據(jù)替換算法,把從主存中讀取的信息放入緩存。

Cache的讀操作流程圖

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

寫操作

寫直達(dá)法(Write – through)

寫操作時(shí)數(shù)據(jù)既寫入 Cache又寫入主存, 寫操作時(shí)間就是訪問(wèn)主存的時(shí)間 Cache塊退出時(shí),不需要對(duì)主存執(zhí)行寫操作,更新策略比較容易實(shí)現(xiàn)。

  • 優(yōu)點(diǎn):主存和緩存數(shù)據(jù)始終保持一致
  • 缺點(diǎn):同一時(shí)間內(nèi)可能對(duì)同一主存進(jìn)行反復(fù)的寫

寫回法(Write – back)

寫操作時(shí)只把數(shù)據(jù)寫入 Cache 而不寫入主存,當(dāng) Cache 數(shù)據(jù)被替換出去時(shí)才寫回主存, 寫操作時(shí)間就是訪問(wèn) Cache 的時(shí)間, Cache塊退出時(shí),被替換的塊需寫回主存,增加了Cache 的復(fù)雜性。

  • 優(yōu)點(diǎn):寫操作時(shí)間就是訪問(wèn) Cache 的時(shí)間
  • 缺點(diǎn):主存和緩存數(shù)據(jù)不一致,多系統(tǒng)情況下會(huì)出現(xiàn)數(shù)據(jù)一致性問(wèn)題

Cache的改進(jìn)

  1. 對(duì)Cache進(jìn)行分級(jí),增加Cache的級(jí)數(shù)
  2. 分立緩存,把指令 Cache和數(shù)據(jù) Cache分開,避免在流水的過(guò)程中造成資源沖突。

4.3.5 Cache-主存的地址映射

直接映射

主存中的任意塊映射到緩存中的唯一塊,每個(gè)主存塊只與一個(gè)緩存塊相對(duì)應(yīng),但是實(shí)現(xiàn)簡(jiǎn)單。

特點(diǎn):不靈活,每個(gè)主存塊只能與固定對(duì)應(yīng)某個(gè)緩存塊,即使還空著許多位置也不能使用。這使得直接映射的塊沖突概率最高,空間利用率最低。

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

全相聯(lián)映射

直接映射的另一個(gè)極端,可以把主存數(shù)據(jù)塊裝入 Cache 中的任何位置。

全相聯(lián)映射方式的優(yōu)點(diǎn)是比較靈活,Cache 塊的沖突概率低,空間利用率高,命中率也高,缺點(diǎn)是地址變換速度慢,實(shí)現(xiàn)成本高。

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

組相聯(lián)映射

相聯(lián)映射是直接映射和全相聯(lián)映射相結(jié)合的方式,將主存和cache都分成若干段,并且使他們每組所包含的塊數(shù)都相等,組之間采用全相聯(lián)映射,組內(nèi)塊之間采用直接映射。

直接映射和全相連映射的折中。

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

4.3.6 替換算法

  1. FIFO(First In First Out):遵循先入先出原則,若當(dāng)前Cache被填滿,則替換最早進(jìn)入Cache的那個(gè)。
  2. LRU(Least Recently Used):最近最少被使用的被替換,也就是替換最后一次訪問(wèn)時(shí)間最久遠(yuǎn)的那個(gè)。
  3. LFU(Least Frequently Used):最不常使用的被替換,也就是過(guò)去某個(gè)時(shí)間窗口里引用次數(shù)最少的那個(gè)。

4.4 輔助存儲(chǔ)器

4.4.1 概述

例如:磁盤、光盤、硬盤

特點(diǎn):不直接和CPU交換信息;斷電后能保存信息

4.4.2 硬磁盤存儲(chǔ)器

1.硬磁盤存儲(chǔ)器的類型

  • 固定磁頭和移動(dòng)磁頭
  • 可換盤和固定盤

2. 硬磁盤存儲(chǔ)器結(jié)構(gòu)

計(jì)算機(jī)組成原理——第4章-存儲(chǔ)器

磁盤控制器

  • 接收主機(jī)發(fā)來(lái)的命令,轉(zhuǎn)換成磁盤驅(qū)動(dòng)器的控制命令
  • 實(shí)現(xiàn)主機(jī)和驅(qū)動(dòng)器之間的數(shù)據(jù)格式轉(zhuǎn)換
  • 控制磁盤驅(qū)動(dòng)器讀寫

磁盤控制器是主機(jī)與磁盤驅(qū)動(dòng)器之間的接口:對(duì)主機(jī)(通過(guò)總線)

對(duì)驅(qū)動(dòng)器(設(shè)備接口)


4.4.3 光盤存儲(chǔ)器

1. 概述

采用光存儲(chǔ)技術(shù);利用激光寫入和讀出

  • 第一代光存儲(chǔ)技術(shù) 采用非磁性介質(zhì) 不可擦寫
  • 第二代光存儲(chǔ)技術(shù) 采用磁性介質(zhì) 可擦寫

2. 光盤存儲(chǔ)原理

  • 只讀型和只寫一次型 熱作用 (物理和化學(xué))
  • 可擦寫光盤 熱磁效應(yīng)

4.5 補(bǔ)充

簡(jiǎn)述用戶找一個(gè)數(shù)據(jù),計(jì)算機(jī)內(nèi)部執(zhí)行過(guò)程:

CPU寄存器 -> Cache -> RAM的MDR -> RAM -> 輔存

本章完

敬愛與明天

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多