您好,歡迎進(jìn)入深圳市穎特新科技有限公司官方網(wǎng)站!
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.請問PIC單片機(jī)和AVR單片機(jī)是51內(nèi)核的嗎?
不是,都有自己的C編譯環(huán)境
3.STC51單片機(jī)和AT89S51的匯編語言一樣嗎?
內(nèi)核和指令集都是一樣的, 所以放心,另外建議你編輯的時(shí)候如果對執(zhí)行時(shí)間要求不是很苛刻的話,盡量使用C語言,畢竟通用性好且比較簡單
但匯編程序也要會(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ī)那么簡單的概念了,差不多跟電腦CPU類似
了。現(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系列。用戶若想對寫入到EPROM中的程序進(jìn)行修改,必須先用一種特殊的紫外線燈將其照射擦除,之后再可寫入。寫入到外接程序存儲(chǔ)器的程序代碼沒有什么保密性可言。
2、8051的特點(diǎn)
8051片內(nèi)有4k ROM,無須外接外存儲(chǔ)器和373,更能體現(xiàn)“單片”的簡練。但是你編的程序你無法燒寫到其ROM中,只有將程序交芯片廠代你燒寫,并是一次性的,今后你和芯片廠都不能改寫其內(nèi)容。
3、8751的特點(diǎn)
8751與8051基本一樣,但8751片內(nèi)有4k的EPROM,用戶可以將自己編寫的程序?qū)懭雴纹瑱C(jī)的EPROM中進(jìn)行現(xiàn)場實(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)處理能力對于大部分嵌入式應(yīng)用來說是最為重要的。傳統(tǒng)的8位、16位單片機(jī)已經(jīng)很好的處理了這類問題,但是隨著當(dāng)今嵌入式設(shè)計(jì)不斷增長的功能需求和特殊要求,許多微控制器廠商開始拋棄他們傳統(tǒng)的8位、16位單片機(jī)。但是選擇32位處理器對于某些任務(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)可能僅僅是供電部分,比如采用電池供電。對于一個(gè)實(shí)時(shí)的順序處理應(yīng)用來說,通信的失敗可能會(huì)導(dǎo)致災(zāi)難性后果。這樣的場合下就需要一個(gè)靈巧的控制器。這個(gè)控制器應(yīng)當(dāng)能夠以正確的順序處理任務(wù),并且響應(yīng)時(shí)間必須均衡。所有上述應(yīng)用的共同問題可能就是定期的現(xiàn)場升級(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)今日益增長的需求。陳舊和低效的架構(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í)行一條最簡單的指令需要4個(gè)時(shí)鐘周期,這導(dǎo)致使用20M的時(shí)鐘僅能達(dá)到5MIPS.對于其他CPU架構(gòu),比如8051內(nèi)核。其執(zhí)行一條指令至少需要6個(gè)時(shí)鐘周期,這就使得實(shí)際的MIPS要比給定的時(shí)鐘頻率低很多。
上述代碼是一個(gè)簡單的C語言函數(shù),表1列出了在三種不同CPU架構(gòu)上編譯這段代碼的相應(yīng)結(jié)果。8051內(nèi)核的執(zhí)行時(shí)間幾乎是PIC16內(nèi)核的4倍,對于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)缺乏對大容量存儲(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市場26%的收益。推測2009年,14%的8位嵌入式應(yīng)用會(huì)代表36%的收益。而這14%的應(yīng)用會(huì)使用64KB甚至更多的程序存儲(chǔ)空間。
從系統(tǒng)性能的角度來看,所有這些使得較舊的8位MCU逐漸失去競爭力。
2.不適宜32位處理器的場合
舊式CPU架構(gòu)無法滿足當(dāng)今的市場需求,為了解決這個(gè)問題,許多廠商升級(jí)至32位的處理平臺(tái)。對于需要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)勢明顯。另外,強(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ì)獗怼⑹召M(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è)定義需要說一下,
外設(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)部,簡稱片內(nèi);外設(shè)是外部設(shè)備的簡稱,是指集成電路芯片外部的設(shè)備。集成電路芯片與外部設(shè)備的連接一般需要專門的接口電路和總線的連接(包括控制總線路、地址總線和數(shù)據(jù)總線等)。
由于大規(guī)模集成電路的技術(shù)發(fā)展得很快,現(xiàn)在許多芯片在制造時(shí)已經(jīng)能夠?qū)⒉糠纸涌陔娐泛涂偩集成到芯片內(nèi)部。對于這部分電路與傳統(tǒng)的接口電路和總線是有區(qū)別的,為了加于區(qū)別可以稱之為片內(nèi)外設(shè),其含義是在集成電路芯片內(nèi)部集成的用于與外部設(shè)備連接的接口電路和總線。
因此,簡單的說,“片內(nèi)外設(shè)”是芯片內(nèi)部用于與外部設(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í)上擊敗了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í)間很長,寫入很慢。
最初,把只能讀的存儲(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í)有很重要工作(通話)要做,如果寫入,漫長的等待是讓用戶忍無可忍的。
FLASH存儲(chǔ)器又稱閃存,它結(jié)合了ROM和RAM的長處,不僅具備電子可擦出可編程(EEPROM)的性能,還不會(huì)斷電丟失數(shù)據(jù)同時(shí)可以快速讀取數(shù)據(jù) (NVRAM的優(yōu)勢),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)和我們通常用的“閃盤”,可以在線擦除。
從兩個(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)也簡單.
整個(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高速緩沖存儲(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)樗麄儗ache從設(shè)計(jì)的必要性到工作原理、工作過程等等都已了如指掌了;而對菜鳥朋友們而言,這些未必就很清楚。那么,它們到底是指的什么呢?不用急,下面就請隨筆者一起來全面認(rèn)識(shí)Cache。
為什么要設(shè)計(jì)Cache?
我們知道,電腦的內(nèi)存是以系統(tǒng)總線的時(shí)鐘頻率工作的,這個(gè)頻率通常也就是CPU的外頻(對于雷鳥、毒龍系列的處理器,由于在設(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是一種特殊的存儲(chǔ)器,它由Cache 存儲(chǔ)部件和Cache控制部件組成。Cache 存儲(chǔ)部件一般采用與CPU同類型的半導(dǎo)體存儲(chǔ)器件,存取速度比內(nèi)存快幾倍甚至十幾倍。而Cache 控制器部件包括主存地址寄存器、Cache 地址寄存器,主存—Cache地址變換部件及替換控制部件等。至于它們各自又是怎樣工作的、有何作用等等,我想我們就沒有必要做進(jìn)一步的研究,知道一般Cache分為L1 Cache(其中又分為數(shù)據(jù)Cache、代碼Cache)、L2 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)的性能得以提升
早在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(作為L1 Cache),以及至少64KB的L2 Cache。
有的朋友可能會(huì)問,既然Cache的作用如此重要,那為么不把電腦的全部內(nèi)存都變?yōu)镃ache,那樣不是更好嗎?其實(shí)對于這個(gè)問題,撇開價(jià)格因素,單就其實(shí)用性而言也是沒有必要的,畢竟,電腦在執(zhí)任務(wù)時(shí),那種使用頻率非常高的子程序或指令不是很多的,因此那些使用頻率不太高的內(nèi)容只須保存在速度相對較低的內(nèi)存中就可以了!
在實(shí)際應(yīng)用中,Cache,尤其是L2Cache對系統(tǒng)的性能,特別是對浮點(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)映象三種
1、直接映像
是指每個(gè)主存頁只能復(fù)制到某一固定的Cache頁中。直接映像的規(guī)律是:將主存的2048頁分為128組,每組有16頁,分別與Cache的16頁直接對應(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)系,但可自由映像到對應(yīng)的Cache組中的任意一頁。即組間采用直接映像,而組內(nèi)的頁為全相聯(lián)映像。
當(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)。
1、讀操作
訪存時(shí),將主存地址同時(shí)送主存和Cache,一則啟動(dòng)對主存的讀操作,二則在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始終保持一致,但速度慢。
緩存(cached)是把讀取過的數(shù)據(jù)保存起來,重新讀取時(shí)若命中(找到需要的數(shù)據(jù))就不要去讀硬盤了,若沒有命中就讀硬盤。其中的數(shù)據(jù)會(huì)根據(jù)讀取頻率進(jìn)行組織,把最頻繁讀取的內(nèi)容放在最容易找到的位置,把不再讀的內(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ù)。簡單來說,buffer是即將要被寫入磁盤的,而cache是被從磁盤中讀出來的!
buffer是由各種進(jìn)程分配的,被用在如輸入隊(duì)列等方面,一個(gè)簡單的例子如某個(gè)進(jìn)程要求有多個(gè)字段讀入,在所有字段被讀入完整之前,進(jìn)程把先前讀入的字段放在buffer中保存!
cache經(jīng)常被用在磁盤的I/O請求上,如果有多個(gè)進(jìn)程都要訪問某個(gè)文件,于是該文件便被做成cache以方便下次被訪問,這樣可提供系統(tǒng)性能。
通常人們所說的Cache就是指緩存SRAM。 SRAM叫靜態(tài)內(nèi)存,“靜態(tài)”指的是當(dāng)我們將一筆數(shù)據(jù)寫入SRAM后,除非重新寫入新數(shù)據(jù)或關(guān)閉電源,否則寫入的數(shù)據(jù)保持不變。
有了高速緩存,可以先把數(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,對于這類CPU來說,主板上提供的已是三級(jí)緩存了。
掃碼關(guān)注我們
傳真:0755-82591176
郵箱:vicky@yingtexin.net
地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08