68精品久久久久久欧美,最近中文字幕完整在线看一,久久亚洲男人天堂,最近中文字幕完整视频高清1

您好,歡迎進(jìn)入深圳市穎特新科技有限公司官方網(wǎng)站!

您現(xiàn)在的位置:首頁 新聞資訊 >> 新聞?lì)^條 >> 說說內(nèi)核與計(jì)算機(jī)硬件結(jié)構(gòu)
新聞資訊
NEWS INFORMATION

說說內(nèi)核與計(jì)算機(jī)硬件結(jié)構(gòu)

發(fā)布時(shí)間:2019-05-22

1.內(nèi)核諸如51/ARM/90/PIC/AVR.....有好多種的,何況內(nèi)核從來不分類,因?yàn)槊恳患页6伎梢愿膬?nèi)核,你應(yīng)該問的是架構(gòu)!!只有懂架構(gòu)才能用什么片子都駕輕就熟. 我詳細(xì)的說一下吧. HARVARD(哈佛)架構(gòu):ROM(程序空間)與RAM(數(shù)據(jù)空間)分開,便于程序與數(shù)據(jù)的同時(shí)訪問,減少程序運(yùn)行時(shí)訪問的瓶頸,提高數(shù)據(jù)吞吐. PRINCETON(普林斯頓)架構(gòu):采用通用計(jì)算機(jī)廣泛使用的ROMRAM合二為一的方式,就是眾所周知的馮諾依曼結(jié)構(gòu),程序指令存儲(chǔ)地址和數(shù)據(jù)指令存儲(chǔ)地址指向同一存儲(chǔ)器不同位置,因此程序指令和數(shù)據(jù)的寬度相同. 舉例說明:以英特爾為例:MCS-51用的是哈佛架構(gòu),而后及產(chǎn)品16位的MCS-96就是普林斯頓架構(gòu).ARM公司賣的內(nèi)核幾乎多是哈佛架構(gòu)的.

2.請(qǐng)問PIC單片機(jī)和AVR單片機(jī)是51內(nèi)核的嗎?

   不是,都有自己的C編譯環(huán)境

3.STC51單片機(jī)和AT89S51的匯編語言一樣嗎?

   內(nèi)核和指令集都是一樣的, 所以放心,另外建議你編輯的時(shí)候如果對(duì)執(zhí)行時(shí)間要求不是很苛刻的話,盡量使用C語言,畢竟通用性好且比較簡(jiǎn)單

但匯編程序也要會(huì)!這個(gè)可以直接與芯片交流呀!
4.AVR單片機(jī)是什么內(nèi)核?

     答:AVR單片機(jī)內(nèi)核就是AVR內(nèi)核,和51內(nèi)核是不一樣的,如果內(nèi)核一樣的話,那它的匯編指令應(yīng)該是一樣的,實(shí)際上他們的匯編指令是

完全不一樣的。AVR是美國ATMEL公司研發(fā)的,ATMEL公司有三大系列MCU,一種是老式的以8051內(nèi)核的單片機(jī),第二種是目前大量使用

的以AVR內(nèi)核的AVR單片機(jī)。第三種是目前高端的以ARM內(nèi)核的微處理器。ARM已經(jīng)不是單片機(jī)那么簡(jiǎn)單的概念了,差不多跟電腦CPU類似

了,F(xiàn)在手機(jī)上的CPU就是AVR的。

 

5.51系列單片機(jī)的區(qū)別與特點(diǎn)介紹 

8031/8051/8751是Intel公司早期的產(chǎn)品。

1、8031的特點(diǎn)
     8031片內(nèi)不帶程序存儲(chǔ)器ROM,使用時(shí)用戶需外接程序存儲(chǔ)器和一片邏輯電路373,外接的程序存儲(chǔ)器多為EPROM的2764系列。用戶若想對(duì)寫入到EPROM中的程序進(jìn)行修改,必須先用一種特殊的紫外線燈將其照射擦除,之后再可寫入。寫入到外接程序存儲(chǔ)器的程序代碼沒有什么保密性可言。
2、8051的特點(diǎn)
     8051片內(nèi)有4k ROM,無須外接外存儲(chǔ)器和373,更能體現(xiàn)“單片”的簡(jiǎn)練。但是你編的程序你無法燒寫到其ROM中,只有將程序交芯片廠代你燒寫,并是一次性的,今后你和芯片廠都不能改寫其內(nèi)容。
3、8751的特點(diǎn)
     8751與8051基本一樣,但8751片內(nèi)有4k的EPROM,用戶可以將自己編寫的程序?qū)懭雴纹瑱C(jī)的EPROM中進(jìn)行現(xiàn)場(chǎng)實(shí)驗(yàn)與應(yīng)用,EPROM的改寫同樣需要用紫外線燈照射一定時(shí)間擦除后再燒寫。

 


    由于上述類型的單片機(jī)應(yīng)用的早,影響很大,已成為事實(shí)上的工業(yè)標(biāo)準(zhǔn)。后來很多芯片廠商以各種方式與Intel公司合作,也推出了同類型的單片機(jī),如同一種單片機(jī)的多個(gè)版本一樣,雖都在不斷的改變制造工藝,但內(nèi)核卻一樣,也就是說這類單片機(jī)指令系統(tǒng)完全兼容,絕大多數(shù)管腳也兼容;在使用上基本可以直接互換。人們統(tǒng)稱這些與8051內(nèi)核相同的單片機(jī)為“51系列單片機(jī)”,學(xué)了其中一種,便會(huì)所有的51系列。

 

6.內(nèi)核包含中央運(yùn)算單元+內(nèi)部總線+指令解析+..........,內(nèi)核有很多中,8051,Arm,Mips,power PC,這些都是代表人物,還有很多,很多

內(nèi)核是軟件或者硬件的基本核心部分,可以包含軟件和硬件。如LINUX的內(nèi)核就是軟件的,是LINUX最基本的部分,其他軟件是在內(nèi)核的基礎(chǔ)上發(fā)展。51內(nèi)核是51系列兼容機(jī)的基本部分。包含指令系統(tǒng)、和基本的硬件,如內(nèi)存結(jié)構(gòu)等。其他增強(qiáng)型51單片機(jī),就是在內(nèi)核的基礎(chǔ)上擴(kuò)展功能。

 

系統(tǒng)性能并不等價(jià)于計(jì)算能力。較低的功耗、豐富的片內(nèi)外設(shè)以及實(shí)時(shí)的信號(hào)處理能力對(duì)于大部分嵌入式應(yīng)用來說是最為重要的。傳統(tǒng)的8位、16位單片機(jī)已經(jīng)很好的處理了這類問題,但是隨著當(dāng)今嵌入式設(shè)計(jì)不斷增長(zhǎng)的功能需求和特殊要求,許多微控制器廠商開始拋棄他們傳統(tǒng)的8位、16位單片機(jī)。但是選擇32位處理器對(duì)于某些任務(wù)來可能并不是最適宜的。下面我們就討論一下單片機(jī)的選型問題。

理解系統(tǒng)性能

MIPS(million instructions per second),是微控制器計(jì)算能力的表征。但是,所有的嵌入式應(yīng)用不僅僅是需要計(jì)算能力,所以應(yīng)用的多樣化決定了系統(tǒng)性能衡量方式的多樣化,大部分參數(shù)都同等重要并且難于用一個(gè)參數(shù)來表示,我們并不應(yīng)該僅僅從MIPS就判定系統(tǒng)的好壞。也許某一應(yīng)用由于成本的限制,需要一款高集成度的微控制器,該控制器需要多個(gè)定時(shí)器和多種接口。但是另一個(gè)應(yīng)用需要高的精度和快速的模擬轉(zhuǎn)換能力。兩者的共同點(diǎn)可能僅僅是供電部分,比如采用電池供電。對(duì)于一個(gè)實(shí)時(shí)的順序處理應(yīng)用來說,通信的失敗可能會(huì)導(dǎo)致災(zāi)難性后果。這樣的場(chǎng)合下就需要一個(gè)靈巧的控制器。這個(gè)控制器應(yīng)當(dāng)能夠以正確的順序處理任務(wù),并且響應(yīng)時(shí)間必須均衡。所有上述應(yīng)用的共同問題可能就是定期的現(xiàn)場(chǎng)升級(jí)能力。

除了與具體的產(chǎn)品要求有關(guān)外,系統(tǒng)性能的衡量也可以考慮是否有容易上手、容易使用的開發(fā)工具、應(yīng)用示例、齊全的文檔和高效的支持網(wǎng)絡(luò)。

系統(tǒng)性能的相關(guān)問題

1.傳統(tǒng)8位單片機(jī)的局限

大多數(shù)工程師十分關(guān)注系統(tǒng)性能,因?yàn)樵絹碓蕉嗟?位和16位單片機(jī)家族已經(jīng)無法滿足當(dāng)今日益增長(zhǎng)的需求。陳舊和低效的架構(gòu)限制了處理能力、存儲(chǔ)器容量、外設(shè)處理和低功耗要求。8位的處理器架構(gòu),比如8051、PIC14、PIC16、PIC18、78K0和HC08是在高級(jí)語言(比如C語言)出現(xiàn)之前開發(fā)的,其指令集僅用于匯編開發(fā)環(huán)境。并且這類架構(gòu)的中央處理單元(CPUs)缺乏一些關(guān)鍵功能,比如16位的算數(shù)運(yùn)算支持、條件跳轉(zhuǎn)和存儲(chǔ)器指針。

許多CPU架構(gòu)執(zhí)行一條指令需要若干時(shí)鐘周期。Microchip的8位PIC家族執(zhí)行一條最簡(jiǎn)單的指令需要4個(gè)時(shí)鐘周期,這導(dǎo)致使用20M的時(shí)鐘僅能達(dá)到5MIPS.對(duì)于其他CPU架構(gòu),比如8051內(nèi)核。其執(zhí)行一條指令至少需要6個(gè)時(shí)鐘周期,這就使得實(shí)際的MIPS要比給定的時(shí)鐘頻率低很多。

上述代碼是一個(gè)簡(jiǎn)單的C語言函數(shù),表1列出了在三種不同CPU架構(gòu)上編譯這段代碼的相應(yīng)結(jié)果。8051內(nèi)核的執(zhí)行時(shí)間幾乎是PIC16內(nèi)核的4倍,對(duì)于AVR架構(gòu)更是達(dá)到了28倍。

一些半導(dǎo)體廠商解決了時(shí)鐘分配問題,使得微控制器實(shí)現(xiàn)了單時(shí)鐘周期指令。當(dāng)時(shí)鐘頻率為100MHz時(shí),Silicon Labs聲稱他們基于8位8051架構(gòu)的微控制器能夠達(dá)到100MIPS的峰值。但是,這里有幾個(gè)問題:

第一,由于大部分指令需要兩個(gè)時(shí)鐘周期甚至更多,所以其實(shí)際能力接近于50MIPS;

第二,8051是基于累加器的CPU,所有需要計(jì)算的數(shù)據(jù)必須拷貝到累加器。查看8051處理器的匯編代碼,可以發(fā)現(xiàn)65%-70%的指令用來移動(dòng)數(shù)據(jù)。由于現(xiàn)代8位和16位單片機(jī)架構(gòu)中有一系列和算術(shù)邏輯單元(ALU)相連的寄存器。因此,8051內(nèi)核的50MIPS僅相當(dāng)于現(xiàn)代8位和16位單片機(jī)架構(gòu)的15MIPS.

第三,較老的CPU架構(gòu)缺乏對(duì)大容量存儲(chǔ)器的支持。早在七十年代,很難想象需要超過64KB存儲(chǔ)器的嵌入式應(yīng)用,這使得許多CPU設(shè)計(jì)師選擇16位的地址總線。因此,CPU、寄存器、指令集以及程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)總線始終受此限制。

第四,在2006年,約有9%的8位嵌入式應(yīng)用使用了64KB甚至更多的程序存儲(chǔ)空間,這代表了8位MCU市場(chǎng)26%的收益。推測(cè)2009年,14%的8位嵌入式應(yīng)用會(huì)代表36%的收益。而這14%的應(yīng)用會(huì)使用64KB甚至更多的程序存儲(chǔ)空間。

從系統(tǒng)性能的角度來看,所有這些使得較舊的8位MCU逐漸失去競(jìng)爭(zhēng)力。

 

 


2.不適宜32位處理器的場(chǎng)合

舊式CPU架構(gòu)無法滿足當(dāng)今的市場(chǎng)需求,為了解決這個(gè)問題,許多廠商升級(jí)至32位的處理平臺(tái)。對(duì)于需要32位處理能力的應(yīng)用來說這無疑是最棒的選擇,但是許多設(shè)計(jì)師轉(zhuǎn)換到32位平臺(tái)并非最正確的選擇。使用32位MCU來解決8位和16位單片機(jī)的自身限制將會(huì)導(dǎo)致過高的成本。

大部分32位微控制器無法提供高速、高分辨率的模數(shù)(ADC)轉(zhuǎn)換,EMC性能通常較低,且ESD保護(hù)較弱。而8位和16位單片機(jī)在這些方面優(yōu)勢(shì)明顯。另外,強(qiáng)的IO驅(qū)動(dòng)能力,可供選擇的多種內(nèi)部、外部振蕩器,無需外部器件的片內(nèi)電壓調(diào)整器等是8位和16位單片機(jī)的另一些優(yōu)點(diǎn)。

顯然,32位CPU包含比任何8位和16位CPU都要多的數(shù)字邏輯單元,這導(dǎo)致了高的制造成本。雖然使用一些特殊的半導(dǎo)體工藝可以降低成本,但是弊端是會(huì)導(dǎo)致較高的漏電流和靜態(tài)功耗。某些應(yīng)用,像水表、燃?xì)獗、收費(fèi)公路電子標(biāo)簽、安全系統(tǒng)等,在他們生命期中的大部分時(shí)間,CPU處于睡眠模式,即為停止?fàn)顟B(tài)。這類應(yīng)用的電池壽命必須在5-10年,所以這情況中,不可能將CPU從8位或者16位升級(jí)至32位處理器。如果想要提升系統(tǒng)性能只有采用別的方法。

這里有幾個(gè)定義需要說一下,

  片內(nèi)(片上)外設(shè)與片外外設(shè)


外設(shè),顧名思義,就是IC芯片所接的能夠與IC通信的外部設(shè)備。早起由于IC集成工藝不發(fā)達(dá),很多東西都是外設(shè)的,在此以DSP芯片為例,比如PWM、ADC、CAN等等,
原本都是需要芯片外接的,即使是現(xiàn)在,仍然有獨(dú)立的ADC芯片,比如ADS8364等等,但是現(xiàn)在,PWM、ADC等等東西都已經(jīng)集成在DSP芯片內(nèi),當(dāng)然,
無論如何,芯片總還是會(huì)需要外接一些設(shè)備實(shí)現(xiàn)某種系統(tǒng),為了與那些外設(shè)相區(qū)別,就將集成在芯片內(nèi),但是又不屬于芯片本身(比如DSP,是一種微處理器,
因此芯片中不屬于微處理器的部分都是外設(shè))的稱為“片上外設(shè)”。

片內(nèi)、外設(shè)是兩個(gè)概念,片內(nèi)指做成芯片的集成電路內(nèi)部,簡(jiǎn)稱片內(nèi);外設(shè)是外部設(shè)備的簡(jiǎn)稱,是指集成電路芯片外部的設(shè)備。集成電路芯片與外部設(shè)備的連接一般需要專門的接口電路和總線的連接(包括控制總線路、地址總線和數(shù)據(jù)總線等)。 

由于大規(guī)模集成電路的技術(shù)發(fā)展得很快,現(xiàn)在許多芯片在制造時(shí)已經(jīng)能夠?qū)⒉糠纸涌陔娐泛涂偩集成到芯片內(nèi)部。對(duì)于這部分電路與傳統(tǒng)的接口電路和總線是有區(qū)別的,為了加于區(qū)別可以稱之為片內(nèi)外設(shè),其含義是在集成電路芯片內(nèi)部集成的用于與外部設(shè)備連接的接口電路和總線。 

因此,簡(jiǎn)單的說,“片內(nèi)外設(shè)”是芯片內(nèi)部用于與外部設(shè)備連接的接口電路和總線。

CPU,內(nèi)核,寄存器,緩存,RAM,ROM的作用和他們之間的聯(lián)系?

先附上一張計(jì)算機(jī)硬件組成圖片:

先說內(nèi)核
內(nèi)核是操作系統(tǒng)最基本的部分。它是為眾多應(yīng)用程序提供對(duì)計(jì)算機(jī)硬件的安全訪問的一部分軟件,這種訪問是有限的,并且內(nèi)核決定一個(gè)程序在什么時(shí)候?qū)δ巢糠钟布僮鞫嚅L(zhǎng)時(shí)間。內(nèi)核的分類可分為單內(nèi)核和雙內(nèi)核以及微內(nèi)核。嚴(yán)格地說,
內(nèi)核并不是計(jì)算機(jī)系統(tǒng)中必要的組成部分
附一張內(nèi)核體系結(jié)構(gòu)照片

鏈接:https://www.zhihu.com/question/24565362/answer/54451597


可以看到內(nèi)核所處的位置
CPU:
中央處理器(CPU,Central Processing Unit)是一塊超大規(guī)模的集成電路,是一臺(tái)計(jì)算機(jī)的運(yùn)算核心(Core)和控制核心( Control Unit)。它的功能主要是解釋計(jì)算機(jī)指令以及處理計(jì)算機(jī)軟件中的數(shù)據(jù)。
中央處理器主要包括運(yùn)算器(算術(shù)邏輯運(yùn)算單元,ALU,Arithmetic Logic Unit)和高速緩沖存儲(chǔ)器(Cache)及實(shí)現(xiàn)它們之間聯(lián)系的數(shù)據(jù)(Data)、控制及狀態(tài)的總線(Bus)。它與內(nèi)部存儲(chǔ)器(Memory)和輸入/輸出(I/O)設(shè)備合稱為電子計(jì)算機(jī)三大核心部件。

寄存器

寄存器是中央處理器內(nèi)的組成部份。它跟CPU有關(guān)。寄存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、數(shù)據(jù)和位址。在中央處理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序計(jì)數(shù)器(PC)。在中央處理器的算術(shù)及邏輯部件中,包含的寄存器有累加器(ACC)。

存儲(chǔ)器

存儲(chǔ)器范圍最大,它幾乎涵蓋了所有關(guān)于存儲(chǔ)的范疇。你所說的寄存器,內(nèi)存,都是存儲(chǔ)器里面的一種。凡是有存儲(chǔ)能力的硬件,都可以稱之為存儲(chǔ)器,這是自然,硬盤更加明顯了,它歸入外存儲(chǔ)器行列,由此可見——。

內(nèi)存

內(nèi)存既專業(yè)名上的內(nèi)存儲(chǔ)器,它不是個(gè)什么神秘的東西,它也只是存儲(chǔ)器中的滄海一粟,它包涵的范圍也很大,一般分為只讀存儲(chǔ)器(ROM)隨機(jī)存儲(chǔ)器(RAM),以及最強(qiáng)悍的高速緩沖存儲(chǔ)器(CACHE),只讀存儲(chǔ)器應(yīng)用廣泛,它通常是一塊在硬件上集成的可讀芯片,作用是識(shí)別與控制硬件,它的特點(diǎn)是只可讀取,不能寫入。隨機(jī)存儲(chǔ)器的特點(diǎn)是可讀可寫,斷電后一切數(shù)據(jù)都消失,我們所說的內(nèi)存條就是指它了。

緩存CACHE

緩存就是數(shù)據(jù)交換的緩沖區(qū)(稱作Cache),當(dāng)某一硬件要讀取數(shù)據(jù)時(shí),會(huì)首先從緩存中查找需要的數(shù)據(jù),如果找到了則直接執(zhí)行,找不到的話則從內(nèi)存中找。由于緩存的運(yùn)行速度比內(nèi)存快得多,故緩存的作用就是幫助硬件更快地運(yùn)行。

因?yàn)榫彺嫱褂玫氖荝AM(斷電即掉的非永久儲(chǔ)存),所以在用完后還是會(huì)把文件送到硬盤等存儲(chǔ)器里永久存儲(chǔ)。電腦里最大的緩存就是內(nèi)存條了,最快的是CPU上鑲的L1和L2緩存,顯卡的顯存是給顯卡運(yùn)算芯片用的緩存,硬盤上也有16M或者32M的緩存。

CACHE是在CPU中速度非常塊,而容量卻很小的一種存儲(chǔ)器,它是計(jì)算機(jī)存儲(chǔ)器中最強(qiáng)悍的存儲(chǔ)器。由于技術(shù)限制,容量很難提升。

ROM、RAM的區(qū)別:

ROM(只讀存儲(chǔ)器或者固化存儲(chǔ)器)

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

ROM和RAM指的都是半導(dǎo)體存儲(chǔ)器,ROM是Read Only Memory的縮寫,RAM是Random Access Memory的縮寫。ROM在系統(tǒng)停止供電的時(shí)候仍然可以保持?jǐn)?shù)據(jù),而RAM通常都是在掉電之后就丟失數(shù)據(jù),典型的RAM就是計(jì)算機(jī)的內(nèi)存。

RAM有兩大類,一種稱為靜態(tài)RAM(Static RAM/SRAM),當(dāng)數(shù)據(jù)被存入其中后不會(huì)消失。SRAM速度非?,是目前讀寫最快的存儲(chǔ)設(shè)備了。當(dāng)這個(gè)SRAM 單元被賦予0 或者1 的狀態(tài)之后,它會(huì)保持這個(gè)狀態(tài)直到下次被賦予新的狀態(tài)或者斷電之后才會(huì)更改或者消失。但是存儲(chǔ)1bit 的信息需要4-6 只晶體管。因此它也非常昂貴,所以只在要求很苛刻的地方使用,譬如CPU的一級(jí)緩沖,二級(jí)緩沖。另一種稱為動(dòng)態(tài)RAM(Dynamic RAM/DRAM),DRAM 必須在一定的時(shí)間內(nèi)不停的刷新才能保持其中存儲(chǔ)的數(shù)據(jù)。DRAM 只要1 只晶體管就可以實(shí)現(xiàn)。DRAM保留數(shù)據(jù)的時(shí)間很短,速度也比SRAM慢,不過它還是比任何的ROM都要快,但從價(jià)格上來說DRAM相比SRAM要便宜很 多,計(jì)算機(jī)內(nèi)存就是DRAM的。

DRAM分為很多種,常見的主要有FPRAM/FastPage、EDORAM、SDRAM、DDR RAM、RDRAM、SGRAM以及WRAM等,這里介紹其中的一種DDR RAM。DDR RAM(Date-Rate RAM)也稱作DDR SDRAM,這種改進(jìn)型的RAM和SDRAM是基本一樣的,不同之處在于它可以在一個(gè)時(shí)鐘讀寫兩次數(shù)據(jù),這樣就使得數(shù)據(jù)傳輸速度加倍了。這是目前電腦中用 得最多的內(nèi)存,而且它有著成本優(yōu)勢(shì),事實(shí)上擊敗了Intel的另外一種內(nèi)存標(biāo)準(zhǔn)-Rambus DRAM。在很多高端的顯卡上,也配備了高速DDR RAM來提高帶寬,這可以大幅度提高3D加速卡的像素渲染能力。

ROM也有很多種,PROM是可編程的ROM,PROM和EPROM(可擦除可編程ROM)兩者區(qū)別是,PROM是一次性的,也就是軟件灌入后,就無法修 改了,這種是早期的產(chǎn)品,現(xiàn)在已經(jīng)不可能使用了,而EPROM是通過紫外光的照射擦出原先的程序,是一種通用的存儲(chǔ)器。另外一種EEPROM是通過電子擦出,價(jià)格很高,寫入時(shí)間很長(zhǎng),寫入很慢。

最初,把只能讀的存儲(chǔ)器叫做ROM(Read Only Memory),并且掉電后數(shù)據(jù)不會(huì)丟失。由于不能改寫,因而使用起來很不方便。隨著技術(shù)的進(jìn)步,在ROM中使用一些新技術(shù),就可以使它具有可以編程的功能。比較早的是熔絲型的可編程ROM,由于是通過熔斷熔絲來編程的,所以這類ROM編程后,就不能再寫了,是一次性的(OTP)。后來又出現(xiàn)了EPROM,是通過紫外線來擦除的,并且通過高壓來編程,這類ROM上面一般有一個(gè)透明的石英玻璃窗,看上去挺漂亮的,它就是用來給紫外線照射的。后來又出現(xiàn)了EEPROM,不用紫外線照射就可以擦除,因而可以直接在電路中編程。另外還有FLASH ROM,又可分為NOR FLASH和NAND FLASH。FLASH ROM一般有一個(gè)特點(diǎn),就是寫數(shù)據(jù)時(shí),可以將1改為0,而不能將0改為1,因而寫數(shù)據(jù)前需要擦除,擦除時(shí)將所有數(shù)據(jù)置1。

之所以依然叫做ROM,歸納一下,大概有幾個(gè)原因:

①不能像RAM那樣快速的寫;

②可能需要特殊的擦寫電壓;

③可能需要特殊的擦寫時(shí)序;

④可能需要在寫之前進(jìn)行擦除操作;

⑤擦寫次數(shù)有限,不像RAM那樣可以隨意寫而不損壞;

⑥掉電后數(shù)據(jù)不會(huì)丟失;

⑦有些可寫的存儲(chǔ)器只能寫一次(OTP)。

舉個(gè)例子,手機(jī)軟件一般放在EEPROM中,我們打電話,有些最后撥打的號(hào)碼,暫時(shí)是存在SRAM中的,不是馬上寫入通過記錄(通話記錄保存在EEPROM中),因?yàn)楫?dāng)時(shí)有很重要工作(通話)要做,如果寫入,漫長(zhǎng)的等待是讓用戶忍無可忍的。

FLASH存儲(chǔ)器又稱閃存,它結(jié)合了ROM和RAM的長(zhǎng)處,不僅具備電子可擦出可編程(EEPROM)的性能,還不會(huì)斷電丟失數(shù)據(jù)同時(shí)可以快速讀取數(shù)據(jù) (NVRAM的優(yōu)勢(shì)),U盤和MP3里用的就是這種存儲(chǔ)器。在過去的20年里,嵌入式系統(tǒng)一直使用ROM(EPROM)作為它們的存儲(chǔ)設(shè)備,然而近年來 Flash全面代替了ROM(EPROM)在嵌入式系統(tǒng)中的地位,用作存儲(chǔ)Bootloader以及操作系統(tǒng)或者程序代碼或者直接當(dāng)硬盤使用(U盤)。

目前Flash主要有兩種NOR Flash和NADN Flash。NOR Flash的讀取和我們常見的SDRAM的讀取是一樣,用戶可以直接運(yùn)行裝載在NOR FLASH里面的代碼,這樣可以減少SRAM的容量從而節(jié)約了成本。NAND Flash沒有采取內(nèi)存的隨機(jī)讀取技術(shù),它的讀取是以一次讀取一快的形式來進(jìn)行的,通常是一次讀取512個(gè)字節(jié),采用這種技術(shù)的Flash比較廉價(jià)。用戶 不能直接運(yùn)行NAND Flash上的代碼,因此好多使用NAND Flash的開發(fā)板除了使用NAND Flah以外,還作上了一塊小的NOR Flash來運(yùn)行啟動(dòng)代碼。

一般小容量的用NOR Flash,因?yàn)槠渥x取速度快,多用來存儲(chǔ)操作系統(tǒng)等重要信息,而大容量的用NAND FLASH,最常見的NAND FLASH應(yīng)用是嵌入式系統(tǒng)采用的DOC(Disk On Chip)和我們通常用的“閃盤”,可以在線擦除。


轉(zhuǎn)自鏈接:https://www.zhihu.com/question/24565362/answer/54451597
cpu主要就是處理各種指令,運(yùn)算、跳轉(zhuǎn)、存取內(nèi)存之內(nèi)的。這些指令所需的數(shù)據(jù)以及指令本身一般都是存儲(chǔ)在ram中的。cpu必須將ram中的指令和數(shù)據(jù)取到cpu中的各種寄存器中,指令才能執(zhí)行。指令的地址存儲(chǔ)在一個(gè)叫做PC的寄存器中,注意這邊的PC不是個(gè)人電腦的意思,而是pointer of code的意思,即指令指針,而數(shù)據(jù)可以放在各種通用寄存器中。cpu中還有很多其他寄存器,控制著cpu各種功能。如果你學(xué)過匯編,便會(huì)知道匯編語言即是操作這些寄存器,完成各種運(yùn)算任務(wù)。
現(xiàn)代高性能cpu內(nèi)部一般都會(huì)有緩存,一般分為指令緩存和數(shù)據(jù)緩存。緩存的訪問速度比外部ram要快很多,所以如果把一部分?jǐn)?shù)據(jù)和指令存儲(chǔ)在緩存中,cpu再從緩存中獲取指令和數(shù)據(jù)能夠提高cpu的速度。
可以被稱作rom的東西很多,如pc主板上的rom芯片,pc關(guān)機(jī)后,rom的數(shù)據(jù)不會(huì)丟失,開機(jī)時(shí)先運(yùn)行其中的bios程序,完成硬件配置和檢測(cè),之后會(huì)將磁盤第一個(gè)扇區(qū)中操作系統(tǒng)的引導(dǎo)程序裝入內(nèi)存,然后徐跳到引導(dǎo)程序。引導(dǎo)程序會(huì)進(jìn)一步將操作系統(tǒng)存儲(chǔ)在磁盤上的內(nèi)核裝入內(nèi)存,最后執(zhí)行內(nèi)核程序。內(nèi)核加載文件系統(tǒng),并執(zhí)行g(shù)ui程序,便可以看到pc的桌面了。

鏈接:https://www.zhihu.com/question/24565362/answer/74078750
CPU中央處理器,負(fù)責(zé)執(zhí)行計(jì)算機(jī)的運(yùn)算指令。寄存器是CPU內(nèi)部的小容量存儲(chǔ)器,用來存放CPU將要運(yùn)算的操作數(shù)或者操作數(shù)的地址,以及計(jì)算機(jī)指令或者指令地址,也會(huì)有計(jì)算結(jié)果存在寄存器中。RAM主要指計(jì)算機(jī)內(nèi)存,用來存放計(jì)算機(jī)正在運(yùn)行的程序的指令以及數(shù)據(jù),包括操作系統(tǒng)和應(yīng)用程序的指令和數(shù)據(jù)。ROM是只讀存儲(chǔ)器,其內(nèi)容掉電不會(huì)丟失,一般來講計(jì)算機(jī)的BIOS會(huì)寫在里面,待計(jì)算機(jī)通電后,這里面的程序會(huì)自動(dòng)被加載到內(nèi)存中供CPU執(zhí)行,去讀磁盤信息引導(dǎo)DOS或者其他操作系統(tǒng)裝入內(nèi)存。
緩存有兩種概念。一種是指硬件高速緩沖存儲(chǔ)器cache,用于協(xié)調(diào)寄存器與內(nèi)存之間讀寫速度不匹配而設(shè)置的一種存儲(chǔ)器。另一種是指人為規(guī)定的一個(gè)區(qū)域(通常是在RAM上劃一塊區(qū)域,這是由操作系統(tǒng)來做的),用來暫時(shí)存放一些輸入輸出數(shù)據(jù)。
內(nèi)核也有兩種理解,你可以簡(jiǎn)單的認(rèn)為CPU就是計(jì)算機(jī)的內(nèi)核。
軟件也會(huì)有內(nèi)核,比如操作系統(tǒng)內(nèi)核,主要是只管路計(jì)算機(jī)硬件資源的部分。

鏈接:https://www.zhihu.com/question/24565362/answer/126282464

CACHE

i-cache和d-cache區(qū)別:

從兩個(gè)方面來回答: 

一方面是cache的行為。Icache大多都是順序取指,碰到分支指令也會(huì)跳轉(zhuǎn),而Dcache訪問的模式變化比較大.也就是前者所說的pattern的問題.指令只有讀和refill沒有寫,而數(shù)據(jù)有讀也有寫.最重要的是馮氏的結(jié)構(gòu)是指令和數(shù)據(jù)分離.I和D在一起只有相互干擾. 
  
另一個(gè)方面就是,物理設(shè)計(jì)上考慮:
一個(gè)union的cache,同時(shí)需要數(shù)據(jù)和指令的訪問,端口上是很難實(shí)現(xiàn)的。
所以一般在流水線的主干上,都是采用分離的icache和dcache. 
非主干的L2 cache,從容量的角度考慮采用union的方式. 
  

當(dāng)然早期的也有不分離icache和dcache.因?yàn)樵缙诘慕Y(jié)構(gòu)也簡(jiǎn)單. 

 

Cache的層次設(shè)計(jì)

出于對(duì)簡(jiǎn)化設(shè)計(jì)的考慮,也為了提高系統(tǒng)的性能,本次設(shè)計(jì)采用了指令Cache(以下簡(jiǎn)稱為ICache)和數(shù)據(jù)Cache (以下簡(jiǎn)稱為DCache)分開的方式。在ICache中存儲(chǔ)有微處理器需要的指令,在微處理器的取指階段,通過程序計(jì)數(shù)器PC提供給ICache的地址,微處理器可以獲取需要的指令。而DCache則是作為一個(gè)數(shù)據(jù)的存儲(chǔ),并提供對(duì)于Load/Store指令所要操作地址的數(shù)據(jù),它地址則來自于ALU運(yùn)算的結(jié)果。
ICache和微處理器的接口以及ICache和L2 ICache的接口都是單向的。DCache和微處理器的接口以及DCache和L2 Cache的接口是雙向的。這樣處理的原因在于ICache存儲(chǔ)的是指令,不需要更改所存儲(chǔ)的數(shù)據(jù)的值。而DCache中存儲(chǔ)的是數(shù)據(jù),其值會(huì)根據(jù)指令操作的不同而改變。比如:在運(yùn)行Store指令的時(shí)候會(huì)對(duì)DCache中相應(yīng)地址進(jìn)行寫入數(shù)據(jù)的操作。

 

整個(gè)系統(tǒng)的層次結(jié)構(gòu)如圖1所示,由ICache和DCache構(gòu)成L1 Cache,以及和L1 Cache接口的L2 Cache,和L2 Cache接口的DRAM。其中L1 Cache和L2 Cache是在微處理器片內(nèi),而DRAM是作為主存,存在于片外。這跟目前主流的個(gè)人電腦的層次結(jié)構(gòu)很相似。 

Cache的結(jié)構(gòu)分析

從微處理器架構(gòu)的角度來說,所謂的Cache包括了兩部分:Cache控制器和Cache存儲(chǔ)器。文本所提及的Cache設(shè)計(jì)也包括了這兩個(gè)方面。
由于ICache只是讀出指令,控制上比DCache要簡(jiǎn)單許多。所以ICache的設(shè)計(jì)完全可以參考DCache的設(shè)計(jì),本文會(huì)針對(duì)L1 Cache 中DCache的設(shè)計(jì)進(jìn)行詳細(xì)的描述。

3.1 DCache存儲(chǔ)器的結(jié)構(gòu)

Cache存儲(chǔ)器其一般實(shí)現(xiàn)方式主要有三種,分別是全相聯(lián),直接映射和組相聯(lián)。全相聯(lián)最靈活但是實(shí)現(xiàn)比較復(fù)雜。直接映射比較容易實(shí)現(xiàn),但是可能產(chǎn)生快速抖動(dòng)。組相聯(lián)則是前兩者的一個(gè)折衷。本文采用的是兩路組相聯(lián)的方式。
圖2:DCache結(jié)構(gòu)圖
為了設(shè)計(jì)方便,整個(gè)DCache存儲(chǔ)器被分成了兩塊,為別用來存儲(chǔ)標(biāo)簽域(Tag)和數(shù)據(jù)域(Data)。其結(jié)構(gòu)如圖2所示,在數(shù)據(jù)域中,每一組中包括512行,每行有16字節(jié)的數(shù)據(jù),在標(biāo)簽域中,每組中都有512行與數(shù)據(jù)域的行相對(duì)應(yīng),每一行中有19位的標(biāo)簽。通過地址總線的中間的地址位來選擇某一行的數(shù)據(jù),同時(shí)通過地址總線的高端的地址位來判斷DCache是否命中。并且由于讀出的是16字節(jié)的數(shù)據(jù),而設(shè)計(jì)的微處理器所需要的僅僅是32位的數(shù)據(jù),因此在數(shù)據(jù)被讀出后還需要通過地址總線的低端的地址位來選擇相應(yīng)的字段,并把微處理器需要的字段放到數(shù)據(jù)總線上。

3.2 DCache控制器的結(jié)構(gòu)

DCache控制器在整個(gè)DCache中處于非常重要的地位,它控制了整個(gè)DCache所要進(jìn)行的操作,同時(shí)會(huì)在發(fā)生缺失時(shí)采取相應(yīng)的對(duì)策。其主要功能如下:
1)反饋給微處理器讀取DCache的信息,包括DCache的命中或者缺失等信息。如果發(fā)生缺失,可能會(huì)要求流水線發(fā)生阻塞。
2)如果發(fā)生缺失,需要從下一級(jí)存儲(chǔ)單元尋找相應(yīng)的地址中的內(nèi)容,并將內(nèi)容載入到DCache中。
3)控制讀寫操作。如果是讀操作,則需要為下一級(jí)的操作提供相應(yīng)的數(shù)據(jù)。如果是寫操作,則需要將數(shù)據(jù)寫入到相應(yīng)的地址中去。
為了完成上述的功能,整個(gè)DCache控制器被分為三個(gè)部分,分別為用來判斷命中還是缺失的判斷部分和用來執(zhí)行發(fā)生缺失時(shí)一些相應(yīng)操作的有限狀態(tài)機(jī)部分以及正常讀寫的控制部分。其中有限狀態(tài)機(jī)部分中還包括了兩個(gè)存儲(chǔ)塊,分別是為了實(shí)現(xiàn)LRU (least recently used)算法的LRU數(shù)據(jù)塊和為了判斷存儲(chǔ)的數(shù)據(jù)有沒有被改寫過的Dirty數(shù)據(jù)塊,其具體的結(jié)構(gòu)圖如圖3所示。
圖3:DCache控制器的結(jié)構(gòu)圖
通過將Tag和地址總線的高地址位比較所得出的hit標(biāo)志提供給FSM,來確定是否需要啟用缺失處理功能。同時(shí)FSM可以通過控制L1 Cache和L2Cache的讀寫,來實(shí)現(xiàn)缺失后數(shù)據(jù)的操作。hit標(biāo)志同樣也會(huì)輸出到微處理器,使得微處理器在發(fā)生缺失的時(shí)候阻塞流水線。

4 Cache的操作分析

由于DCache中會(huì)發(fā)生讀或者寫兩種操作,下面將對(duì)DCache中的讀寫操作分別進(jìn)行分析。
本文涉及的微處理器由5級(jí)流水線構(gòu)成,分別是取指(IF),指令譯碼(ID),執(zhí)行(EXE),內(nèi)存存取(MEM),回寫(WB)。在MEM操作之前是EXE操作,也就是ALU會(huì)根據(jù)指令的不同,計(jì)算出不同的地址值,無論進(jìn)行的是讀或者寫操作,都需要進(jìn)行讀DCache中相應(yīng)地址的Tag值,并通過比較Tag標(biāo)志位來判斷需要讀出或者寫入的地址單元是否存在于DCache中。

讀操作

本設(shè)計(jì)所采用的讀操作的方式是將標(biāo)簽域(Tag)中的內(nèi)容和數(shù)據(jù)域(Data)中的內(nèi)容同時(shí)讀出,然后再將Tag的內(nèi)容與地址高端進(jìn)行比較。如果相等,則說明DCache命中,讀出的Data的內(nèi)容正是給出的地址中的內(nèi)容。如果不相等,則說明發(fā)生了DCache讀缺失,需要進(jìn)行缺失處理。在不發(fā)生缺失的情況下,一次讀操作可以在一個(gè)Clock周期內(nèi)完成。這非常符合流水線的特性。
如果發(fā)生讀缺失,DCache中FSM會(huì)首先查看LRU塊,確定兩路數(shù)據(jù)存儲(chǔ)中具有同一索引的兩個(gè)行中哪一行將會(huì)被替換出去。然后FSM會(huì)查看Dirty塊,確定是否需要將行中的內(nèi)容更新到主存。如果需要,則將之前讀出的數(shù)據(jù)寫入到主存,然后將主存中的數(shù)據(jù)讀出,放到數(shù)據(jù)總線上,供流水線的下一級(jí)使用。如果不需要,則直接讀取主存中相應(yīng)地址的數(shù)據(jù)并放到數(shù)據(jù)總線上,供下一級(jí)使用。這些操作完成之后FSM會(huì)通知微處理器停止阻塞流水線,這樣在下一個(gè)時(shí)鐘周期微處理器又會(huì)正常運(yùn)行。
圖4:讀操作流程圖
讀操作的具體流程和發(fā)生缺失后FSM的相應(yīng)操作流程如圖4所示。

寫操作

寫操作一般有兩種方式分別是寫通過(Write-through)方式和寫回方式(Write-back)。寫通過方式支持改寫Cache中的內(nèi)容,但是不允許Cache和主存內(nèi)容不一致,因此,對(duì)在對(duì)Cache進(jìn)行寫操作時(shí),對(duì)主存也要進(jìn)行寫操作。這會(huì)延長(zhǎng)寫操作的時(shí)間。而寫回方式則是對(duì)相應(yīng)的Cache進(jìn)行寫操作,但是并不立即對(duì)主存進(jìn)行寫操作,這能有效的減少訪問主存的延遲。但是這種方式的實(shí)現(xiàn)比較復(fù)雜,因?yàn)镃ache和主存的內(nèi)容存在不一致性。處于提高性能的考慮,本設(shè)計(jì)所采用的是寫回的方式。
寫操作分兩步進(jìn)行,第一步需要讀取標(biāo)簽域(Tag) 和數(shù)據(jù)域(Data)中的內(nèi)容,然后把Tag的內(nèi)容與地址高端進(jìn)行比較。如果相等,則說明DCache命中,需要寫入數(shù)據(jù)的地址存在,可以將數(shù)據(jù)寫入DCache中。同時(shí)由于寫入的數(shù)據(jù)只有32位,而讀出的數(shù)據(jù)有128位,需要通過地址總線的低位來進(jìn)行選擇需要寫入的字段。如果Tag不相等,則說明發(fā)生了DCache寫缺失,需要進(jìn)行缺失處理。在不發(fā)生缺失的情況下,一次寫操作需要兩個(gè)Clock周期來完成。這不符合流水線的要求,所以本次設(shè)計(jì)中采用了流水線式的寫入方式,在微處理器和DCache之間加入了一級(jí)寫緩存。在讀取DCache的標(biāo)簽和數(shù)據(jù)的內(nèi)容的同時(shí),將數(shù)據(jù)寫入寫緩存。這樣就能夠使得寫入操作以流水線的方式進(jìn)行?梢詽M足流水線微處理器的要求。
當(dāng)發(fā)生寫缺失時(shí),同樣FSM會(huì)先查看LRU塊,確定哪一行需要從兩路數(shù)據(jù)存儲(chǔ)塊中刪除,然后再查看需要從Dcache中刪除的行是否為“臟”。如果是“臟”行,則將之前從DCache中讀出的數(shù)據(jù)寫入到主存,并將主存的數(shù)據(jù)讀出,并連同之前存入寫緩存中的數(shù)據(jù),準(zhǔn)備寫入到DCache中。如果行“干凈”,則直接讀出主存中的數(shù)據(jù),并和寫緩存的數(shù)據(jù)做好寫入DCache的準(zhǔn)備。完成之后FSM會(huì)通知微處理器停止阻塞流水線,這樣在下一個(gè)時(shí)鐘周期微處理器又會(huì)正常運(yùn)行,同時(shí)將數(shù)據(jù)寫入。

cache高速緩沖存儲(chǔ)器一種特殊的存儲(chǔ)器子系統(tǒng),其中復(fù)制了頻繁使用的數(shù)據(jù)以利于快速訪問。存儲(chǔ)器的高速緩沖存儲(chǔ)器存儲(chǔ)了頻繁訪問的RAM位置的內(nèi)容及這些數(shù)據(jù)項(xiàng)的存儲(chǔ)地址。當(dāng)處理器引用存儲(chǔ)器中的某地址時(shí),高速緩沖存儲(chǔ)器便檢查是否存有該地址。如果存有該地址,則將數(shù)據(jù)返回處理器;如果沒有保存該地址,則進(jìn)行常規(guī)的存儲(chǔ)器訪問。因?yàn)楦咚倬彌_存儲(chǔ)器總是比主RAM存儲(chǔ)器速度快,所以當(dāng)RAM的訪問速度低于微處理器的速度時(shí),常使用高速緩沖存儲(chǔ)器。

 

Cache(即高速緩沖存儲(chǔ)器(Cache Memory),是我們最常聽到的一個(gè)詞了。在老鳥們眼中,這個(gè)詞或許已沒有再談的必要,因?yàn)樗麄儗?duì)Cache從設(shè)計(jì)的必要性到工作原理、工作過程等等都已了如指掌了;而對(duì)菜鳥朋友們而言,這些未必就很清楚。那么,它們到底是指的什么呢?不用急,下面就請(qǐng)隨筆者一起來全面認(rèn)識(shí)Cache。

為什么要設(shè)計(jì)Cache?   

         我們知道,電腦的內(nèi)存是以系統(tǒng)總線的時(shí)鐘頻率工作的,這個(gè)頻率通常也就是CPU的外頻(對(duì)于雷鳥、毒龍系列的處理器,由于在設(shè)計(jì)采用了DDR技術(shù),CPU工作的外頻為系統(tǒng)總線頻率的兩倍)。但是,CPU的工作頻率(主頻)是外頻與倍頻因子的乘積。這樣一來,內(nèi)存的工作頻率就遠(yuǎn)低于CPU的工作頻率了。這樣造成的直接結(jié)果是:CPU在執(zhí)行完一條指令后,常常需要“等待”一些時(shí)間才能再次訪問內(nèi)存,極大降了CPU工作效率。在這樣一種情況下,Cache就應(yīng)運(yùn)而生了!

CACHE
                CACHE

CACHE:Cache是一種特殊的存儲(chǔ)器,它由Cache 存儲(chǔ)部件和Cache控制部件組成。Cache 存儲(chǔ)部件一般采用與CPU同類型的半導(dǎo)體存儲(chǔ)器件,存取速度比內(nèi)存快幾倍甚至十幾倍。而Cache 控制器部件包括主存地址寄存器、Cache 地址寄存器,主存—Cache地址變換部件及替換控制部件等。至于它們各自又是怎樣工作的、有何作用等等,我想我們就沒有必要做進(jìn)一步的研究,知道一般Cache分為L(zhǎng)1 Cache(其中又分為數(shù)據(jù)Cache、代碼Cache)、L2 Cache就行了。

CACHE是怎么工作的?/CACHE 

我們知道,CPU運(yùn)行程序是一條指令一條指令地執(zhí)行的,而且指令地址往往是連續(xù)的,意思就是說CPU在訪問內(nèi)存時(shí),在較短的一段時(shí)間內(nèi)往往集中于某個(gè)局部,這時(shí)候可能會(huì)碰到一些需要反復(fù)調(diào)用的子程序。電腦在工作時(shí),把這些活躍的子程序存入比內(nèi)存快得多的Cache 中。CPU在訪問內(nèi)存時(shí),首先判斷所要訪問的內(nèi)容是否在Cache中,如果在,就稱為“命中”,此時(shí)CPU直接從Cache中調(diào)用該內(nèi)容;否則,就稱為“不命中”,CPU只好去內(nèi)存中調(diào)用所需的子程序或指令了。CPU不但可以直接從Cache中讀出內(nèi)容,也可以直接往其中寫入內(nèi)容。由于Cache的存取速率相當(dāng)快,使得CPU的利用率大大提高,進(jìn)而使整個(gè)系統(tǒng)的性能得以提升

CACHE的應(yīng)用/CACHE 

CACHECPU

 

早在486時(shí)代,主板上就設(shè)計(jì)了Cache插槽,用戶可以根據(jù)需要自己配置Cache;586級(jí)的CPU芯片中已集成了部分Cache,同時(shí)還保留了Cache插槽供用戶擴(kuò)充,而到了Pentium Ⅱ時(shí)代后,Cache已全部集成到了CPU芯片中,主板上再也沒有Cache插槽,F(xiàn)在比較流行的CPU芯片中一般集成了至少16KB的代碼Cache 和16KB的數(shù)據(jù)Cache(作為L(zhǎng)1 Cache),以及至少64KB的L2 Cache。

有的朋友可能會(huì)問,既然Cache的作用如此重要,那為么不把電腦的全部?jī)?nèi)存都變?yōu)镃ache,那樣不是更好嗎?其實(shí)對(duì)于這個(gè)問題,撇開價(jià)格因素,單就其實(shí)用性而言也是沒有必要的,畢竟,電腦在執(zhí)任務(wù)時(shí),那種使用頻率非常高的子程序或指令不是很多的,因此那些使用頻率不太高的內(nèi)容只須保存在速度相對(duì)較低的內(nèi)存中就可以了!

在實(shí)際應(yīng)用中,Cache,尤其是L2Cache對(duì)系統(tǒng)的性能,特別是對(duì)浮點(diǎn)運(yùn)算能力有較大的影響。而我們知道,大部分游戲的流暢運(yùn)行需要頻繁的浮點(diǎn)運(yùn)算。因此,CPU運(yùn)行游戲的性能的好壞與L2Cache的容量與速度有很大關(guān)系。

地址映像

·地址映像 
所謂映象問題是指如何確定Cache中的內(nèi)容是主存中的哪一部分的拷貝,即必須應(yīng)用某種函數(shù)把主存地址映象到Cache中定位,也稱地址映象。當(dāng)信息按這種方式裝入Cache中后,執(zhí)行程序時(shí),應(yīng)將主存地址變換為Cache地址,這個(gè)變換過程叫作地址變換。地址映象方式通常采用直接映象、全相聯(lián)映象、組相聯(lián)映象三種

 

CACHE硬盤

1、直接映像

 

是指每個(gè)主存頁只能復(fù)制到某一固定的Cache頁中。直接映像的規(guī)律是:將主存的2048頁分為128組,每組有16頁,分別與Cache的16頁直接對(duì)應(yīng),即主存的第0頁、第16頁、第32頁……只能映像到Cache的第0頁。

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

全相聯(lián)映像是指主存的每一頁可以映像可以映像到Cache的任意一頁。

3、組相聯(lián)映像

組相聯(lián)映像是直接映像與全相聯(lián)映像的折中方案,它將Cache分為若干組,如8組;每組若干頁,如2頁;同時(shí)將主存分為若干組,如255組;每組內(nèi)的頁數(shù)與Cache的組數(shù)相同,如8頁。組相聯(lián)映像的規(guī)律是主存中的各頁與Cache的組號(hào)有固定的映像關(guān)系,但可自由映像到對(duì)應(yīng)的Cache組中的任意一頁。即組間采用直接映像,而組內(nèi)的頁為全相聯(lián)映像。

替換機(jī)構(gòu)/CACHE 

當(dāng)CPU訪問Cache未命中時(shí),應(yīng)從主存中讀取信息,同時(shí)寫入Cache。若Cache未滿,則直接寫入;若Cache已滿,則需要進(jìn)行替換。替換機(jī)構(gòu)由硬件組成,并按替換算法進(jìn)行設(shè)計(jì),其作用是指出替換的頁號(hào)。常用的替換算法有先進(jìn)先出算法(FIFO)和近期最少使用算法(LRU)。

讀寫操作/CACHE 

1、讀操作

訪存時(shí),將主存地址同時(shí)送主存和Cache,一則啟動(dòng)對(duì)主存的讀操作,二則在Cache中按映像方式從中獲取Cache地址,并將主存標(biāo)記與Cache標(biāo)記比較:若相同,則訪問命中,從Cache中讀取數(shù)據(jù)。因?yàn)镃ache速度比主存速度快,所以不等主存讀操作結(jié)束,即可繼續(xù)下一次訪存操作;若不相同,則訪問未命中,則從主存中讀取數(shù)據(jù),并考慮是否按某種替換算法更新Cache某頁的內(nèi)容。

2、寫操作

將數(shù)據(jù)寫入主存有兩種方法,寫回法和些直達(dá)法。

寫回法:信息暫時(shí)只寫入Cache,并用標(biāo)志加以注明,直到該頁內(nèi)容需從Cache中替換出來時(shí),才一次寫入主存。優(yōu)點(diǎn)是操作速度快,缺點(diǎn)是寫回主存前,主存中沒有這些內(nèi)容,與Cache不一致,易造成錯(cuò)誤。

寫直達(dá)法:信息在寫入Cahce時(shí)也同時(shí)寫入主存。優(yōu)點(diǎn)是主存與Cache始終保持一致,但速度慢。

Buffer和Cache區(qū)別/CACHE 

緩存(cached)是把讀取過的數(shù)據(jù)保存起來,重新讀取時(shí)若命中(找到需要的數(shù)據(jù))就不要去讀硬盤了,若沒有命中就讀硬盤。其中的數(shù)據(jù)會(huì)根據(jù)讀取頻率進(jìn)行組織,把最頻繁讀取的內(nèi)容放在最容易找到的位置,把不再讀的內(nèi)容不斷往后排,直至從中刪除! 

 

CACHE內(nèi)存
緩沖(buffers)是根據(jù)磁盤的讀寫設(shè)計(jì)的,把分散的寫操作集中進(jìn)行,減少磁盤碎片和硬盤的反復(fù)尋道,從而提高系統(tǒng)性能。linux有一個(gè)守護(hù)進(jìn)程定期清空緩沖內(nèi)容(即寫如磁盤),也可以通過sync命令手動(dòng)清空緩沖。舉個(gè)例子吧:我這里有一個(gè)ext2的U盤,我往里面cp一個(gè)3M的MP3,但U盤的燈沒有跳動(dòng),過了一會(huì)兒(或者手動(dòng)輸入sync)U盤的燈就跳動(dòng)起來了。卸載設(shè)備時(shí)會(huì)清空緩沖,所以有些時(shí)候卸載一個(gè)設(shè)備時(shí)要等上幾秒鐘! 

 

修改/etc/sysctl.conf中的vm.swappiness右邊的數(shù)字可以在下次開機(jī)時(shí)調(diào)節(jié)swap使用策略。該數(shù)字范圍是0~100,數(shù)字越大越傾向于使用swap。默認(rèn)為60,可以改一下試試。兩者都是RAM中的數(shù)據(jù)。簡(jiǎn)單來說,buffer是即將要被寫入磁盤的,而cache是被從磁盤中讀出來的! 

buffer是由各種進(jìn)程分配的,被用在如輸入隊(duì)列等方面,一個(gè)簡(jiǎn)單的例子如某個(gè)進(jìn)程要求有多個(gè)字段讀入,在所有字段被讀入完整之前,進(jìn)程把先前讀入的字段放在buffer中保存! 

cache經(jīng)常被用在磁盤的I/O請(qǐng)求上,如果有多個(gè)進(jìn)程都要訪問某個(gè)文件,于是該文件便被做成cache以方便下次被訪問,這樣可提供系統(tǒng)性能。

相關(guān)知識(shí)/CACHE 

 通常人們所說的Cache就是指緩存SRAM。 SRAM叫靜態(tài)內(nèi)存,“靜態(tài)”指的是當(dāng)我們將一筆數(shù)據(jù)寫入SRAM后,除非重新寫入新數(shù)據(jù)或關(guān)閉電源,否則寫入的數(shù)據(jù)保持不變。   

 

由于CPU的速度比內(nèi)存和硬盤的速度要快得多,所以在存取數(shù)據(jù)時(shí)會(huì)使CPU等待,影響計(jì)算機(jī)的速度。SRAM的存取速度比其它內(nèi)存和硬盤都要快,所以它被用作電腦的高速緩存(Cache)。   

 

有了高速緩存,可以先把數(shù)據(jù)預(yù)寫到其中,需要時(shí)直接從它讀出,這就縮短了CPU的等待時(shí)間。高速緩存之所以能提高系統(tǒng)的速度是基于一種統(tǒng)計(jì)規(guī)律,主板上的控制系統(tǒng)會(huì)自動(dòng)統(tǒng)計(jì)內(nèi)存中哪些數(shù)據(jù)會(huì)被頻繁的使用,就把這些數(shù)據(jù)存在高速緩存中,CPU要訪問這些數(shù)據(jù)時(shí),就會(huì)先到Cache中去找,從而提高整體的運(yùn)行速度。一般說來,256K的高速緩存能使整機(jī)速度平均提高10%左右! 

主板上通常都會(huì)提供256K到1M的緩存。在CPU內(nèi)部也有高速緩存,如486CPU有8K的高速緩存,Pentium有16K的高速緩存。Pentium II有32K 一級(jí)緩存,AMD K6-2中有64K的一級(jí)Cache,AMD K6-3中有64K 的一級(jí) Cache,和256K 的二級(jí)Cache,Cyrix MII 中有64K的Cache! 

為了區(qū)分它們,CPU內(nèi)部的緩存叫內(nèi)部高速緩存(Internal Cache)或一級(jí)高速緩存,主板上的緩存叫外部高速緩存(External Cache)或二級(jí)高速緩存。不過現(xiàn)在的Pentium II 的CPU已經(jīng)將主板上的二級(jí)緩存封裝在CPU的盒子中,AMD K6-3的CPU內(nèi)部也集成了256K的二級(jí)Cache,對(duì)于這類CPU來說,主板上提供的已是三級(jí)緩存了。



 

 

 

聯(lián)系方式0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤(rùn)豐創(chuàng)業(yè)園A棟2樓A08

浦县| 墨竹工卡县| 涿州市| 北辰区| 云阳县| 南涧| 盘山县| 富裕县| 延津县| 临泉县| 利川市| 平果县| 曲靖市| 康乐县| 沙坪坝区| 三台县| 荆州市| 安新县| 彭州市| 濉溪县| 高清| 湛江市| 常州市| 南木林县| 莒南县| 昌平区| 信阳市| 大姚县| 崇义县| 高陵县| 辽源市| 获嘉县| 永寿县| 承德市| 苏州市| 永春县| 衡东县| 衡山县| 丰县| 栾城县| 新龙县|