系統(tǒng)架構(gòu)設(shè)計(jì)師學(xué)習(xí)筆記 第一章

第一章 計(jì)算機(jī)組成與體系結(jié)構(gòu)

1.1 計(jì)算機(jī)系統(tǒng)組成

1.1.1 計(jì)算機(jī)硬件的組成

  1. 控制器。控制器是分析和執(zhí)行指令的部件,也是統(tǒng)一指揮并控制計(jì)算機(jī)各部件協(xié)調(diào)工作的中心部件,所依據(jù)的是機(jī)器指令。控制器的組成包含如下:
  • 程序計(jì)數(shù)器PC:存儲(chǔ)下一條要執(zhí)行指令的地址;
  • 指令寄存器IR:存儲(chǔ)即將執(zhí)行的指令;
  • 指令譯碼器ID:對(duì)指令中的操作碼字段進(jìn)行分析解釋;
  • 時(shí)序部件:提供時(shí)序控制信號(hào)。
  1. 運(yùn)算器。也成算數(shù)邏輯單元(ALU),主要功能是在控制器的控制下完成各種算術(shù)運(yùn)算和邏輯運(yùn)算。運(yùn)算器的組成包含如下:
  • 算數(shù)邏輯單元ALU:數(shù)據(jù)的算數(shù)運(yùn)算和邏輯運(yùn)算;
  • 累加計(jì)數(shù)器AC:通用寄存器,為ALU提供一個(gè)工作區(qū),用在暫存數(shù)據(jù);
  • 數(shù)據(jù)緩沖寄存器DR:寫內(nèi)存時(shí),暫存指令或數(shù)據(jù);
  • 狀態(tài)條件寄存器PSW:存狀態(tài)標(biāo)志與控制標(biāo)志。
  1. 主存儲(chǔ)器。也稱為內(nèi)存儲(chǔ)器(通常簡(jiǎn)稱主存或內(nèi)存),存儲(chǔ)現(xiàn)場(chǎng)操作的信息于中間結(jié)果,包括機(jī)器指令和數(shù)據(jù)。
  2. 輔助存儲(chǔ)器。也稱外存儲(chǔ)器,通常簡(jiǎn)稱外存或輔存。存儲(chǔ)需要長(zhǎng)期保存的各種信息。
  3. 輸入設(shè)備。
  4. 輸出設(shè)備。

1.1.2 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)的分類

1. 存儲(chǔ)程序的概念

2. Flynn分類

根據(jù)指令流、數(shù)據(jù)流的多倍性特征對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行分類。根據(jù)不同的指令流-數(shù)據(jù)流組織方式,將計(jì)算機(jī)系統(tǒng)分為以下四類:

  1. 單指令流單數(shù)據(jù)流SISD
  2. 單指令流多數(shù)據(jù)流SIMD
  3. 多指令流單數(shù)據(jù)流MISD
  4. 多指令流多數(shù)據(jù)流MIMD

1.1.3 復(fù)雜指令集系統(tǒng)于精簡(jiǎn)指令集系統(tǒng)

1. 復(fù)雜指令系統(tǒng)計(jì)算機(jī)CISC指令系統(tǒng)的特點(diǎn)

  1. 指令數(shù)量眾多,通常有100-250條
  2. 指令使用頻率相差懸殊
  3. 支持很多種尋址方式。通常為5-20種
  4. 變長(zhǎng)的指令。指令長(zhǎng)度不固定
  5. 指令可以對(duì)于主存單元中的數(shù)據(jù)直接進(jìn)行處理。執(zhí)行速度較慢
  6. 以微程序控制為主

2. 精簡(jiǎn)指令系統(tǒng)RISC的特點(diǎn)

  1. 指令數(shù)量少。
  2. 指令的尋址方式少。通常只支持寄存器、立即數(shù)、相對(duì)尋址方式等。
  3. 指令長(zhǎng)度固定。
  4. 以硬布線邏輯控制為主。
  5. 單周期指令執(zhí)行,采用流水線技術(shù)。
  6. 優(yōu)化的編譯器。
  7. CPU中通用寄存器數(shù)量多,一般在32個(gè)以上,有的可達(dá)上千個(gè)。

大多數(shù)RISC采用了Cache方案,使用Cache來(lái)提高取指令的速度。而且,有的RISC使用兩個(gè)獨(dú)立的Cache來(lái)改善性能,一個(gè)稱為指令Cache,另一個(gè)稱為數(shù)據(jù)Cache。這樣,取指令和取數(shù)據(jù)可以同時(shí)進(jìn)行,互不干擾。

1.1.4 總線

是一組能為多個(gè)部件分時(shí)共享的公共信息傳輸線路。共享是指總線上可以掛接多個(gè)部件,各個(gè)部件之間相互交換的信息都可以通過(guò)這組公共線路傳送;分時(shí)是指同一時(shí)刻只允許有一個(gè)部件向總線發(fā)送信息,如果出現(xiàn)兩個(gè)或兩個(gè)以上部件同時(shí)向總線發(fā)送信息,勢(shì)必導(dǎo)致信號(hào)沖突。當(dāng)然,在同一時(shí)刻,允許多個(gè)部件同時(shí)從總線上接收相同的信息。

按總線相對(duì)于CPU或其他芯片的位置可以分為內(nèi)部總線和外部總線兩種。在CPU內(nèi)部,寄存器之間和算數(shù)邏輯部件ALU與控制部件之間傳輸數(shù)據(jù)所用的總線稱為內(nèi)部總線;外部總線是指CPU與內(nèi)存RAM、ROM和輸入/輸出設(shè)備接口之間進(jìn)行通信的線路。由于CPU通過(guò)總線實(shí)現(xiàn)程序取指令、內(nèi)存/外設(shè)的數(shù)據(jù)交換,在CPU與外設(shè)一定的情況下,總線速度是制約計(jì)算機(jī)整體性能的最大因素。

按總線功能來(lái)劃分,又可以分為地址總線、數(shù)據(jù)總線、控制總線三類,人們通常所說(shuō)的總線都包括這三個(gè)組成部分,地址總線用來(lái)傳送地址信息,數(shù)據(jù)總線用來(lái)傳送數(shù)據(jù)信息,控制總線用來(lái)傳送各種控制信號(hào)。

1.2 存儲(chǔ)器系統(tǒng)

用來(lái)存放程序和數(shù)據(jù)的部件。

傳統(tǒng)的存儲(chǔ)器系統(tǒng)一般分為高速緩沖存儲(chǔ)器(Cache)、主存、輔存三級(jí)。

  • 主存可由CPU直接訪問(wèn),存儲(chǔ)速度快,但是容量較小,一般用來(lái)存放當(dāng)前正在執(zhí)行的程序和數(shù)據(jù)。
  • 輔存直接設(shè)置在主機(jī)外部,存儲(chǔ)容量大,價(jià)格較低,但存取速度較慢,一般用來(lái)存放暫時(shí)不參與運(yùn)行的程序和數(shù)據(jù),CPU不可以直接訪問(wèn)輔存,輔存中的程序和數(shù)據(jù)在需要時(shí)才傳送到主存。
  • 當(dāng)CPU速度很高時(shí),為了使訪問(wèn)存儲(chǔ)器的速度能與CPU的速度相匹配,又在主存和CPU間增設(shè)了一級(jí)Cache。Cache的存取速度比主存速度更快,但是容量更小,用來(lái)存放當(dāng)前最急需處理的程序和數(shù)據(jù),以便更快速的向CPU提供指令和數(shù)據(jù)。

多層級(jí)的存儲(chǔ)體系之所以能用低投入換來(lái)較高的存取速率,得益于局部性原理。局部性原理是指程序在執(zhí)行時(shí)呈現(xiàn)出局部性規(guī)律,即在一較短的時(shí)間內(nèi),程序的執(zhí)行僅局限于某個(gè)部分。相應(yīng)的,它所訪問(wèn)的存儲(chǔ)空間也僅局限于某個(gè)區(qū)域。程序局限性包括時(shí)間局部性和空間局部性,時(shí)間局部性是指程序中的某條指令一旦執(zhí)行,不久以后該指令可能再次執(zhí)行。產(chǎn)生時(shí)間局部性的典型原因是由于程序中存在著大量的循環(huán)操作;空間局部性是指一旦程序訪問(wèn)了某個(gè)存儲(chǔ)單元,不久以后,其附近的存儲(chǔ)單元也將被訪問(wèn),即程序在一段時(shí)間內(nèi)所訪問(wèn)的地址可能集中在一定的范圍內(nèi),其典型情況是程序順序執(zhí)行。

存儲(chǔ)器中常用的存儲(chǔ)方式:

  1. 順序存取:存儲(chǔ)的數(shù)據(jù)以記錄的形式進(jìn)行組織。對(duì)數(shù)據(jù)的訪問(wèn)必須按特定的順序進(jìn)行。磁帶存儲(chǔ)器
  2. 直接存取:與順序存儲(chǔ)相似。直接存儲(chǔ)使用一個(gè)共享的讀寫裝置對(duì)所有的數(shù)據(jù)進(jìn)行訪問(wèn)。但是,每個(gè)數(shù)據(jù)塊都有唯一的地址標(biāo)識(shí),讀寫裝置可以直接移動(dòng)到目的數(shù)據(jù)塊所在位置進(jìn)行訪問(wèn),存取時(shí)間也是可變的。硬盤存儲(chǔ)器。
  3. 隨機(jī)存取:存儲(chǔ)器的每一個(gè)可尋址單元都具有自己唯一的地址和讀寫裝置,系統(tǒng)可以在相同的時(shí)間內(nèi)對(duì)任意一個(gè)存儲(chǔ)單元的數(shù)據(jù)進(jìn)行訪問(wèn),而與先前的訪問(wèn)序列無(wú)關(guān)。主存儲(chǔ)器。
  4. 相聯(lián)存取:是隨機(jī)存取的一種形式,但是選擇某一單元進(jìn)行讀寫時(shí)取決于其內(nèi)容而不是其地址。每個(gè)單元都有自己的讀寫裝置,讀寫時(shí)間也是一個(gè)常數(shù),使用相聯(lián)存取方式,可以對(duì)所有的存儲(chǔ)單元的特定位進(jìn)行比較,選擇符合條件的單元進(jìn)行訪問(wèn)。Cache。

1.2.1 主存儲(chǔ)器

用來(lái)存放計(jì)算機(jī)運(yùn)行期間所需要的程序和數(shù)據(jù),CPU可以直接隨機(jī)的進(jìn)行讀/寫。主存具有一定容量,存取速度較高。由于CPU要頻繁的訪問(wèn)主存,所以主存的性能在很大程度上影響了整個(gè)計(jì)算機(jī)系統(tǒng)的性能。主存可以分為隨機(jī)存取存儲(chǔ)器和只讀存儲(chǔ)器。

  1. 隨機(jī)存取存儲(chǔ)器
    RAM,可寫入讀出,但斷電后信息無(wú)法保存,因此只能用于暫時(shí)存儲(chǔ)數(shù)據(jù)。可分為DRAM動(dòng)態(tài)存儲(chǔ)和SRAM靜態(tài)存儲(chǔ)兩種。DRAM的信息會(huì)隨時(shí)間逐漸消失,因此需要定時(shí)對(duì)其刷新維持信息不丟失;SRAM在不斷電的情況下信息能夠一直保持而不會(huì)丟失。DRAM密度大于SRAM且更加便宜,但SRAM速度快,電路簡(jiǎn)單,容量小,價(jià)格高。
  2. 只讀存儲(chǔ)器
    ROM,可以看作RAM的特殊形式,特點(diǎn)是:存儲(chǔ)器的內(nèi)容只能隨即讀出而不能寫入。一旦寫入,固定不變,即使斷電,寫入的內(nèi)容也不會(huì)丟失,又稱固定存儲(chǔ)器。用來(lái)存放系統(tǒng)程序BIOS
  3. 主存編址方法
    計(jì)算機(jī)系統(tǒng)中,存儲(chǔ)器中每個(gè)單元的位數(shù)時(shí)相同且固定的,成為存儲(chǔ)器編址單位。主要分為字編址和字節(jié)編址

1.2.2 輔助存儲(chǔ)器

用于存放當(dāng)前不需要立即使用的信息,一旦需要,再和主機(jī)成批交換數(shù)據(jù)。主機(jī)的外部設(shè)備,稱為外存儲(chǔ)器。存儲(chǔ)容量大、可靠性高、價(jià)格低。

1. 磁帶存儲(chǔ)器

順序存取的設(shè)備,特點(diǎn)為:存取時(shí)間較長(zhǎng),但存儲(chǔ)容量大,便于攜帶,價(jià)格便宜。

2. 磁盤存儲(chǔ)器

在磁盤上進(jìn)行信息的讀寫時(shí),首先要定位到目標(biāo)磁道,這個(gè)過(guò)程稱之為尋道,尋道所消耗的時(shí)間成為尋道時(shí)間,定位到目標(biāo)磁道后,需要定位到目標(biāo)扇區(qū),此過(guò)程通過(guò)旋轉(zhuǎn)盤片完成,平均旋轉(zhuǎn)半圈可到目標(biāo)位置,故磁盤訪問(wèn)時(shí)間為:

$$磁盤訪問(wèn)時(shí)間(存取時(shí)間)=尋道時(shí)間+旋轉(zhuǎn)延遲時(shí)間$$

1.2.3 Cache存儲(chǔ)器

功能是為了提高CPU數(shù)據(jù)輸入輸出的速率,即CPU與存儲(chǔ)系統(tǒng)間數(shù)據(jù)傳送帶寬限制。通常在CPU和內(nèi)存之間設(shè)置小容量的Cache。

Cache采用相聯(lián)存儲(chǔ)器CAM,是一種基于數(shù)據(jù)內(nèi)容進(jìn)行訪問(wèn)的存儲(chǔ)設(shè)備。對(duì)其寫入數(shù)據(jù)時(shí),CAM能夠自動(dòng)選擇一個(gè)未用的空單元進(jìn)行存儲(chǔ);當(dāng)需要讀出數(shù)據(jù)時(shí),而是直接給出該數(shù)據(jù)或該數(shù)據(jù)的一部分內(nèi)容。CAM通過(guò)對(duì)所有存儲(chǔ)單元中的數(shù)據(jù)同時(shí)進(jìn)行比較,并標(biāo)記符合條件的所有數(shù)據(jù)以供提取。比較是同時(shí)、并行進(jìn)行的。

1. Cache基本原理

使用Cache改善性能的依據(jù)是程序的局部性原理。

根據(jù)局部性原理,可以爸目前常用或?qū)⒁玫降男畔㈩A(yù)先放到Cache中,當(dāng)CPU需要讀取數(shù)據(jù)時(shí),首先在Cache中查找是否有所需內(nèi)容,如果有,則直接從Cache中讀取;若沒有,再?gòu)膬?nèi)存中讀取該數(shù)據(jù),然后同時(shí)送往CPU和Cache。如果CPU需要訪問(wèn)的內(nèi)容大多都能在Cache中找到(稱為訪問(wèn)命中),則可以大大提高系統(tǒng)性能。

如果以$h$代表對(duì)Cache的訪問(wèn)命中率($1-h$稱為失效率,或未命中率),$t_1$表示Cache的周期時(shí)間,$t_2$表示內(nèi)存的周期時(shí)間,以讀操作為例,使用“Cache+主存儲(chǔ)器”的系統(tǒng)的平均周期為$t_3$,則:

$$t_3=t_1\times h+t_2\times (1-h)$$

系統(tǒng)的平均存儲(chǔ)周期與命中率有很密切的關(guān)系,命中率的提高即使很小也能導(dǎo)致性能的極大改善。

例如:設(shè)某計(jì)算機(jī)主存的讀/寫時(shí)間為100ns,有一個(gè)指令和數(shù)據(jù)合一的Cache,已知該Cache的讀/寫時(shí)間為10ns,取指令的命中率為98%,取數(shù)的命中率為95%,在執(zhí)行某類程序時(shí),約有$1/5$指令需要存/取一個(gè)操作數(shù)。假設(shè)指令流水線再任何時(shí)候都不阻塞,則設(shè)置Cache后,每條指令的平均訪存時(shí)間約為:

$$(2%\times 100ns+98%\times 10ns)+1/5\times (5%\times 100ns+95%\times 10ns)=14.7ns$$

2. 映射機(jī)制

當(dāng)CPU發(fā)出訪存請(qǐng)求后,存儲(chǔ)器地址先被送到Cache控制器以確定所需數(shù)據(jù)是否已在Cache中,若命中則直接對(duì)Cache進(jìn)行訪問(wèn)。這個(gè)過(guò)程稱為Cache的地址映射(映像)。在Cache的地址映射中,主存和Cache將均分成容量相同的塊(頁(yè))。常見的映射方法有直接映射、全相聯(lián)映射和組相聯(lián)映射。

1) 直接映射

以隨機(jī)存儲(chǔ)器作為Cache存儲(chǔ)器,硬件電路較簡(jiǎn)單。在進(jìn)行映射時(shí),主存地址被分成三個(gè)部分,從高到低一次為:區(qū)號(hào)、頁(yè)號(hào)、頁(yè)內(nèi)地址。

區(qū)號(hào) 頁(yè)號(hào) 頁(yè)內(nèi)地址
7位 4位 19位
- Cache地址 Cache地址

例如:內(nèi)存容量為1GB,Cache容量為8MB,頁(yè)大小為512KB。直接映像中,先分區(qū),再分頁(yè)。一個(gè)區(qū)的大小就是Cache容量的大小,所以一共分:1GB/8MB=128個(gè)區(qū),所以區(qū)號(hào)為7位。每個(gè)區(qū)分:8MB/512KB=16個(gè)頁(yè),所以頁(yè)號(hào)為4位。

直接映射方式中,沒個(gè)內(nèi)存也只能復(fù)制到某一固定的Cache頁(yè)中。映射規(guī)律為:主存中每個(gè)區(qū)的第0頁(yè),只能進(jìn)入Cache的第0頁(yè)。若當(dāng)前時(shí)刻Cache中0號(hào)頁(yè)已被占據(jù),而1-15號(hào)頁(yè)空閑,現(xiàn)在要將1區(qū)的第0頁(yè)(即內(nèi)存的16頁(yè))調(diào)入Cache是會(huì)發(fā)生沖突的。所以直接映射的塊沖突率非常高。

在Cache中,為每一個(gè)頁(yè)設(shè)立一個(gè)Cache標(biāo)記,該標(biāo)記用于識(shí)別當(dāng)前的Cache塊來(lái)自于哪個(gè)內(nèi)存頁(yè)。直接映像中,由于每個(gè)區(qū)的N號(hào)頁(yè),都必須進(jìn)入到Cache的N號(hào)頁(yè),所以只需要記錄區(qū)號(hào)即可。所以此時(shí)標(biāo)記位的長(zhǎng)度為7位。

直接映射方式的優(yōu)點(diǎn)是比較容易實(shí)現(xiàn),缺點(diǎn)是不夠靈活,有可能使Cache的存儲(chǔ)空間得不到充分利用。

2) 全相聯(lián)映像

使用相聯(lián)存儲(chǔ)器組成的Cache存儲(chǔ)器。該方式中,主存中的每一頁(yè)可以映射到Cache的任一頁(yè)。如果淘汰Cache中某一頁(yè)的內(nèi)容,則可調(diào)入任一主存頁(yè)的內(nèi)容,因此比直接映射方式更為靈活。

在全相聯(lián)映射方式中,主存地址分為兩個(gè)部分,分別為地址部分(主存頁(yè)標(biāo)記)和數(shù)據(jù)部分(頁(yè)內(nèi)地址)。數(shù)據(jù)部分用來(lái)存放數(shù)據(jù),而地址部分則存放該數(shù)據(jù)的存儲(chǔ)器地址。

頁(yè)號(hào) 頁(yè)內(nèi)地址
11位 19位
主存頁(yè)號(hào)

因?yàn)镃ache中某一頁(yè)的內(nèi)容都可以在主存中的任一頁(yè)中存儲(chǔ),所以在Cache中也需要存儲(chǔ)該頁(yè)所對(duì)應(yīng)的主存頁(yè)號(hào),所以,Cache標(biāo)記信息位數(shù)增加,比較邏輯成本隨之增加。

在全相聯(lián)映射方式中,主存地址不能直接提取Cache頁(yè)號(hào),而是需要將主存頁(yè)標(biāo)記于Cache各頁(yè)的標(biāo)記諸葛比較,直到找到符合標(biāo)記的頁(yè)(訪問(wèn)Cache命中),或者全部比較完成仍無(wú)符合的標(biāo)記(訪問(wèn)Cache失敗)。因此這種映射方式速度很慢,是掉了高速緩存的作用,也是該方式的最大缺點(diǎn)。因此只適用于小容量Cache。

3) 組相聯(lián)映射

也稱頁(yè)組映射,介于直接映射和全相聯(lián)映射之間,是這兩種映射的折衷方案。全相聯(lián)映射以頁(yè)為單位,可自由映射,沒有固定的對(duì)應(yīng)關(guān)系,直接映射方式中,主存分組,主存組內(nèi)的各頁(yè)與Cache的頁(yè)之間采取的是固定的映射關(guān)系,但各組均可映射到Cache中。在組相聯(lián)映射中就,主存和Cache都分組,主存中的一個(gè)組內(nèi)的頁(yè)數(shù)與Cache的分組數(shù)相同。

區(qū)號(hào) 組號(hào) 組內(nèi)頁(yè)號(hào) 頁(yè)內(nèi)地址
7位 3位 1位 19位
- Cache地址 Cache地址 Cache地址

組關(guān)聯(lián)映射的規(guī)則為:主存中的組于Cache中的組形成直接映射關(guān)系,而每個(gè)組內(nèi)的頁(yè)是全相聯(lián)映射關(guān)系。如主存中1區(qū)0頁(yè),它在0組中,所以只能進(jìn)入Cache中的0組中,至于進(jìn)入到Cache中的0組0頁(yè)還是0組1頁(yè),并無(wú)強(qiáng)制要求,可以任意放置。

如果Cache中每組只有一頁(yè),則組相聯(lián)映射方式就變成了直接映射方式,如果Cache中每組頁(yè)數(shù)為16頁(yè)(即Cache只分一組),那就是全相聯(lián)映射。

在組相聯(lián)映射中,由于Cache中每組有若干可以選擇的頁(yè),因而它在映射定位方面較直接映射方式靈活;每組頁(yè)數(shù)有限,因此付出的代價(jià)不是很大,可以根據(jù)設(shè)計(jì)目標(biāo)選擇組內(nèi)頁(yè)數(shù)。

3. 替換算法

當(dāng)Cache中產(chǎn)生了一次訪問(wèn)未命中之后,相應(yīng)的數(shù)據(jù)應(yīng)同時(shí)讀入CPU和Cache。但是當(dāng)Cache已存滿數(shù)據(jù)后,新數(shù)據(jù)必須替換(淘汰)Cache中的某些舊數(shù)據(jù)。

1) 隨機(jī)算法

最簡(jiǎn)單的替換算法。完全不管Cache塊過(guò)去、現(xiàn)在及將來(lái)的使用情況,簡(jiǎn)單的根據(jù)一個(gè)隨機(jī)數(shù),選擇一塊替換掉。

2) 先進(jìn)先出算法FIFO

按照調(diào)入Cache中的先后順序決定淘汰的順序,即在需要更新時(shí),將最先進(jìn)入Cache中的塊最為被替換的塊。該方法要求為每塊做一記錄,記下他們進(jìn)入Cache的先后順序。這種方法容易實(shí)現(xiàn),而且系統(tǒng)開銷小,缺點(diǎn)是可能會(huì)把一些需要經(jīng)常使用的程序塊(如循環(huán)程序)替換掉。

3) 近期最少使用原則LRU

LRU算法是把CPU近期最少使用的塊作為被替換的塊。這種替換方法需要隨時(shí)記錄Cache中各塊的使用情況,以便確定哪個(gè)塊時(shí)近期最少使用的塊。LRU算法相對(duì)合理,但實(shí)現(xiàn)起來(lái)比較復(fù)雜,系統(tǒng)開銷較大。通常需要對(duì)每一塊設(shè)置一個(gè)稱為“年齡計(jì)數(shù)器”的硬件或軟件計(jì)數(shù)器,用以記錄其被使用的情況。

4. 寫操作

因?yàn)樾枰WC緩存在Cache中的數(shù)據(jù)與內(nèi)存中的內(nèi)容一致,相對(duì)讀操作而言,Cache的寫操作比較復(fù)雜。

1) 寫直達(dá)

當(dāng)要寫Cache時(shí),數(shù)據(jù)同時(shí)寫回內(nèi)存,有時(shí)也稱為寫通。當(dāng)某一塊需要替換時(shí),也不必把這一塊寫回到主存中去,新調(diào)入的塊可以立即把這一塊覆蓋掉。這種方法實(shí)現(xiàn)簡(jiǎn)單,而且能隨時(shí)保持主存數(shù)據(jù)的正確性,但可能增加多次不必要的主存寫入,會(huì)降低存取速度。

2) 寫回

CPU修改Cache中的某一塊之后,相應(yīng)的數(shù)據(jù)并不立即寫回內(nèi)存單元,而是當(dāng)該塊從Cache中被淘汰時(shí),才把數(shù)據(jù)寫回到內(nèi)存中。在采用這種更新策略的Cache塊表中,一般有一個(gè)標(biāo)志位,當(dāng)一塊中的任何一個(gè)單元被修改時(shí),標(biāo)志位被置“1”。當(dāng)需要替換掉這一塊時(shí),如果標(biāo)志位為“1”,則必須先把這一塊寫回到主存中去之后,才能再掉入新的塊;如果標(biāo)識(shí)為“0”,則這一塊不必寫回內(nèi)存,只要用新調(diào)入的塊覆蓋掉這一塊即可。這種方法的優(yōu)點(diǎn)是操作速度塊,缺點(diǎn)是因主存中的字塊會(huì)隨時(shí)修改而有可能出錯(cuò)。

3) 標(biāo)記法

對(duì)Cache中的每一個(gè)數(shù)據(jù)設(shè)置一個(gè)有效位。當(dāng)數(shù)據(jù)進(jìn)入Cache后,有效位置“1”;而當(dāng)CPU要對(duì)該數(shù)據(jù)進(jìn)行修改時(shí),數(shù)據(jù)只需要寫入內(nèi)存并同時(shí)將該有效位置“0“。當(dāng)要從Cache中讀取數(shù)據(jù)時(shí)需要測(cè)試其有效位,若為”1“則直接從Cache中取數(shù),否則,從內(nèi)存中取數(shù)。

1.3 流水線

流水線技術(shù)吧一個(gè)任務(wù)分解為若干順序執(zhí)行的子任務(wù),不同的子任務(wù)由不同的執(zhí)行機(jī)構(gòu)負(fù)責(zé)執(zhí)行,而這些機(jī)構(gòu)可以同時(shí)并行工作。在任一時(shí)刻,任一任務(wù)只占用其中一個(gè)執(zhí)行機(jī)構(gòu),這樣就可以實(shí)現(xiàn)多個(gè)任務(wù)的重疊執(zhí)行,以提高效率。

1.3.1 流水線周期

流水線應(yīng)用過(guò)程中,會(huì)將需要處理的工作分為N個(gè)階段,最耗時(shí)的那一段所消耗的時(shí)間為流水線周期。如:使用流水線技術(shù)執(zhí)行100條指令,每條指令取指2ms,分析4ms,執(zhí)行1ms,則流水線周期為4ms。

1.3.2 計(jì)算流水線執(zhí)行時(shí)間

延續(xù)上面的場(chǎng)景,將一個(gè)任務(wù)的執(zhí)行過(guò)程可以分為N個(gè)階段,假設(shè)每個(gè)階段的完成時(shí)間為t,則完成該任務(wù)所需的時(shí)間即為Nt。若以傳統(tǒng)的形式,則完成k個(gè)任務(wù)所需的時(shí)間為kNt;而使用流水線技術(shù)執(zhí)行,則花費(fèi)的時(shí)間是Nt+(k-1)t。也就是說(shuō),除了第1個(gè)任務(wù)需要完整的時(shí)間外,其他都通過(guò)并行,節(jié)省下了大量的時(shí)間。所以流水線的執(zhí)行時(shí)間可以通俗的表達(dá)為:

流水線執(zhí)行時(shí)間=第1條指令的執(zhí)行時(shí)間+(n-1)X流水線周期
n代表需要處理的任務(wù)數(shù)量。

在考試時(shí),需要特別注意一個(gè)細(xì)節(jié)問(wèn)題,流水線的執(zhí)行時(shí)間計(jì)算,其實(shí)進(jìn)一步可以分理論情況和實(shí)踐情況兩種不同的處理方式。下面以實(shí)例進(jìn)行說(shuō)明。

例:某計(jì)算機(jī)系統(tǒng),一條指令的執(zhí)行需要經(jīng)歷取指2ms,分析4ms,執(zhí)行1ms三個(gè)階段,現(xiàn)需要執(zhí)行100條指令,利用流水線技術(shù)需要多長(zhǎng)時(shí)間?
理論上來(lái)說(shuō),一條指令的執(zhí)行時(shí)間為:2ms+4ms+1ms=7ms
所以理論上流水線的執(zhí)行時(shí)間為:2ms+4ms+1ms+(100-1)X4ms=403ms
而實(shí)際上,真正做流水線處理時(shí)考慮到處理的復(fù)雜性,會(huì)將執(zhí)行的每個(gè)階段的時(shí)間都統(tǒng)一為流水線周期,即1條指令的執(zhí)行周期為4ms+4ms+4ms=12ms。
所以,實(shí)際流水線的執(zhí)行時(shí)間為4ms+4ms+4ms+(100-1)X4ms=408ms。

考試時(shí),80%以上的概率采用理論公式計(jì)算,所以考試時(shí)需要以理論公式計(jì)算,若計(jì)算的結(jié)果無(wú)正確選項(xiàng),才考慮使用實(shí)際公式計(jì)算。

1.3.3 流水線的吞吐率

流水線的吞吐率(Though Put Rate,TP)是指在單位時(shí)間內(nèi)流水線所完成的任務(wù)數(shù)量或輸出的結(jié)果數(shù)量。計(jì)算流水線吞吐率的最基本公示如下:

$$TP=\frac{n}{T_k}$$

$n$為任務(wù)數(shù),${T_k}$是處理完成$n$個(gè)任務(wù)所用的時(shí)間。

流水線的最大吞吐率為:

$$TP_{max}=\operatorname*{Lim}_{n\to \infty}\frac{n}{(k+n-1)\Delta t}=\frac{1}{\Delta t}$$

1.3.4 流水線的加速比

完成同樣一批任務(wù),使用流水線所用的時(shí)間與不使用流水線所用的時(shí)間之比成為流水線的加速比(speedup radio)。如果不使用流水線,則順序執(zhí)行所用的時(shí)間為$T_0$,使用流水線的執(zhí)行時(shí)間為$T_k$,則計(jì)算流水線加速比的基本公式如下:

$$S=\frac{T_0}{T_k}$$

如果流水線各個(gè)流水段的執(zhí)行時(shí)間都相等(設(shè)為$\Delta t$),則一條$k$段流水線完成$n$個(gè)連續(xù)任務(wù)所需要的時(shí)間為$(k+n-1)\Delta t$。如果不使用流水線,即順序執(zhí)行這$n$個(gè)任務(wù),則所需的時(shí)間為$nk\Delta t$。因此,各個(gè)流水段執(zhí)行時(shí)間均相等的一條$k$段流水線完成$n$個(gè)連續(xù)任務(wù)的實(shí)際加速比為:

$$S=\frac{nk\Delta t}{(k+n-1)\Delta t}=\frac{nk}{k+n-1}$$

這種情況下的最大加速比為:

$$S_{max}=\operatorname*{Lim}_{n\to \infty}\frac{nk}{k+n-1}=k$$

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,501評(píng)論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,673評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,610評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,939評(píng)論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,668評(píng)論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,004評(píng)論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,001評(píng)論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,173評(píng)論 0 290
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,705評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,426評(píng)論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,656評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,139評(píng)論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,833評(píng)論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,247評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,580評(píng)論 1 295
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,371評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,621評(píng)論 2 380

推薦閱讀更多精彩內(nèi)容

  • 一、概要 1、數(shù)據(jù)的表示:數(shù)制及其轉(zhuǎn)換、原碼、反碼、補(bǔ)碼、移碼、浮點(diǎn)數(shù)、溢出、算...
    _Jason___閱讀 3,183評(píng)論 0 5
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,829評(píng)論 18 139
  • 計(jì)算機(jī)系統(tǒng)漫游 代碼從文本到可執(zhí)行文件的過(guò)程(c語(yǔ)言示例):預(yù)處理階段,處理 #inlcude , #defin...
    willdimagine閱讀 3,616評(píng)論 0 5
  • 我們以歷史資料為例簡(jiǎn)單介紹下paxos算法:戰(zhàn)國(guó)中期,秦國(guó)商鞅變法后迅速崛起對(duì)外擴(kuò)張,在函谷關(guān)外拉開大軍,準(zhǔn)備全面...
    那些年搬過(guò)的磚閱讀 555評(píng)論 0 0
  • 世界上的一隊(duì)小小的漂泊者啊,請(qǐng)留下你的足印在我的文字里。 ——泰戈?duì)枴讹w鳥集》 昨夜,借一夜冷雨的淋漓,夜品李太白...
    漂浮在世閱讀 690評(píng)論 0 0