您好,歡迎進入深圳市穎特新科技有限公司官方網(wǎng)站!
1.內核諸如51/ARM/90/PIC/AVR.....有好多種的,何況內核從來不分類,因為每一家常都可以改內核,你應該問的是架構!!只有懂架構才能用什么片子都駕輕就熟. 我詳細的說一下吧. HARVARD(哈佛)架構:ROM(程序空間)與RAM(數(shù)據(jù)空間)分開,便于程序與數(shù)據(jù)的同時訪問,減少程序運行時訪問的瓶頸,提高數(shù)據(jù)吞吐. PRINCETON(普林斯頓)架構:采用通用計算機廣泛使用的ROMRAM合二為一的方式,就是眾所周知的馮諾依曼結構,程序指令存儲地址和數(shù)據(jù)指令存儲地址指向同一存儲器不同位置,因此程序指令和數(shù)據(jù)的寬度相同. 舉例說明:以英特爾為例:MCS-51用的是哈佛架構,而后及產(chǎn)品16位的MCS-96就是普林斯頓架構.ARM公司賣的內核幾乎多是哈佛架構的.
2.請問PIC單片機和AVR單片機是51內核的嗎?
不是,都有自己的C編譯環(huán)境
3.STC51單片機和AT89S51的匯編語言一樣嗎?
內核和指令集都是一樣的, 所以放心,另外建議你編輯的時候如果對執(zhí)行時間要求不是很苛刻的話,盡量使用C語言,畢竟通用性好且比較簡單
但匯編程序也要會!這個可以直接與芯片交流呀!
4.AVR單片機是什么內核?
答:AVR單片機內核就是AVR內核,和51內核是不一樣的,如果內核一樣的話,那它的匯編指令應該是一樣的,實際上他們的匯編指令是
完全不一樣的。AVR是美國ATMEL公司研發(fā)的,ATMEL公司有三大系列MCU,一種是老式的以8051內核的單片機,第二種是目前大量使用
的以AVR內核的AVR單片機。第三種是目前高端的以ARM內核的微處理器。ARM已經(jīng)不是單片機那么簡單的概念了,差不多跟電腦CPU類似
了,F(xiàn)在手機上的CPU就是AVR的。
5.51系列單片機的區(qū)別與特點介紹
8031/8051/8751是Intel公司早期的產(chǎn)品。
1、8031的特點
8031片內不帶程序存儲器ROM,使用時用戶需外接程序存儲器和一片邏輯電路373,外接的程序存儲器多為EPROM的2764系列。用戶若想對寫入到EPROM中的程序進行修改,必須先用一種特殊的紫外線燈將其照射擦除,之后再可寫入。寫入到外接程序存儲器的程序代碼沒有什么保密性可言。
2、8051的特點
8051片內有4k ROM,無須外接外存儲器和373,更能體現(xiàn)“單片”的簡練。但是你編的程序你無法燒寫到其ROM中,只有將程序交芯片廠代你燒寫,并是一次性的,今后你和芯片廠都不能改寫其內容。
3、8751的特點
8751與8051基本一樣,但8751片內有4k的EPROM,用戶可以將自己編寫的程序寫入單片機的EPROM中進行現(xiàn)場實驗與應用,EPROM的改寫同樣需要用紫外線燈照射一定時間擦除后再燒寫。
由于上述類型的單片機應用的早,影響很大,已成為事實上的工業(yè)標準。后來很多芯片廠商以各種方式與Intel公司合作,也推出了同類型的單片機,如同一種單片機的多個版本一樣,雖都在不斷的改變制造工藝,但內核卻一樣,也就是說這類單片機指令系統(tǒng)完全兼容,絕大多數(shù)管腳也兼容;在使用上基本可以直接互換。人們統(tǒng)稱這些與8051內核相同的單片機為“51系列單片機”,學了其中一種,便會所有的51系列。
6.內核包含中央運算單元+內部總線+指令解析+..........,內核有很多中,8051,Arm,Mips,power PC,這些都是代表人物,還有很多,很多
內核是軟件或者硬件的基本核心部分,可以包含軟件和硬件。如LINUX的內核就是軟件的,是LINUX最基本的部分,其他軟件是在內核的基礎上發(fā)展。51內核是51系列兼容機的基本部分。包含指令系統(tǒng)、和基本的硬件,如內存結構等。其他增強型51單片機,就是在內核的基礎上擴展功能。
系統(tǒng)性能并不等價于計算能力。較低的功耗、豐富的片內外設以及實時的信號處理能力對于大部分嵌入式應用來說是最為重要的。傳統(tǒng)的8位、16位單片機已經(jīng)很好的處理了這類問題,但是隨著當今嵌入式設計不斷增長的功能需求和特殊要求,許多微控制器廠商開始拋棄他們傳統(tǒng)的8位、16位單片機。但是選擇32位處理器對于某些任務來可能并不是最適宜的。下面我們就討論一下單片機的選型問題。
理解系統(tǒng)性能
MIPS(million instructions per second),是微控制器計算能力的表征。但是,所有的嵌入式應用不僅僅是需要計算能力,所以應用的多樣化決定了系統(tǒng)性能衡量方式的多樣化,大部分參數(shù)都同等重要并且難于用一個參數(shù)來表示,我們并不應該僅僅從MIPS就判定系統(tǒng)的好壞。也許某一應用由于成本的限制,需要一款高集成度的微控制器,該控制器需要多個定時器和多種接口。但是另一個應用需要高的精度和快速的模擬轉換能力。兩者的共同點可能僅僅是供電部分,比如采用電池供電。對于一個實時的順序處理應用來說,通信的失敗可能會導致災難性后果。這樣的場合下就需要一個靈巧的控制器。這個控制器應當能夠以正確的順序處理任務,并且響應時間必須均衡。所有上述應用的共同問題可能就是定期的現(xiàn)場升級能力。
除了與具體的產(chǎn)品要求有關外,系統(tǒng)性能的衡量也可以考慮是否有容易上手、容易使用的開發(fā)工具、應用示例、齊全的文檔和高效的支持網(wǎng)絡。
系統(tǒng)性能的相關問題
1.傳統(tǒng)8位單片機的局限
大多數(shù)工程師十分關注系統(tǒng)性能,因為越來越多的8位和16位單片機家族已經(jīng)無法滿足當今日益增長的需求。陳舊和低效的架構限制了處理能力、存儲器容量、外設處理和低功耗要求。8位的處理器架構,比如8051、PIC14、PIC16、PIC18、78K0和HC08是在高級語言(比如C語言)出現(xiàn)之前開發(fā)的,其指令集僅用于匯編開發(fā)環(huán)境。并且這類架構的中央處理單元(CPUs)缺乏一些關鍵功能,比如16位的算數(shù)運算支持、條件跳轉和存儲器指針。
許多CPU架構執(zhí)行一條指令需要若干時鐘周期。Microchip的8位PIC家族執(zhí)行一條最簡單的指令需要4個時鐘周期,這導致使用20M的時鐘僅能達到5MIPS.對于其他CPU架構,比如8051內核。其執(zhí)行一條指令至少需要6個時鐘周期,這就使得實際的MIPS要比給定的時鐘頻率低很多。
上述代碼是一個簡單的C語言函數(shù),表1列出了在三種不同CPU架構上編譯這段代碼的相應結果。8051內核的執(zhí)行時間幾乎是PIC16內核的4倍,對于AVR架構更是達到了28倍。
一些半導體廠商解決了時鐘分配問題,使得微控制器實現(xiàn)了單時鐘周期指令。當時鐘頻率為100MHz時,Silicon Labs聲稱他們基于8位8051架構的微控制器能夠達到100MIPS的峰值。但是,這里有幾個問題:
第一,由于大部分指令需要兩個時鐘周期甚至更多,所以其實際能力接近于50MIPS;
第二,8051是基于累加器的CPU,所有需要計算的數(shù)據(jù)必須拷貝到累加器。查看8051處理器的匯編代碼,可以發(fā)現(xiàn)65%-70%的指令用來移動數(shù)據(jù)。由于現(xiàn)代8位和16位單片機架構中有一系列和算術邏輯單元(ALU)相連的寄存器。因此,8051內核的50MIPS僅相當于現(xiàn)代8位和16位單片機架構的15MIPS.
第三,較老的CPU架構缺乏對大容量存儲器的支持。早在七十年代,很難想象需要超過64KB存儲器的嵌入式應用,這使得許多CPU設計師選擇16位的地址總線。因此,CPU、寄存器、指令集以及程序存儲器和數(shù)據(jù)存儲器的數(shù)據(jù)總線始終受此限制。
第四,在2006年,約有9%的8位嵌入式應用使用了64KB甚至更多的程序存儲空間,這代表了8位MCU市場26%的收益。推測2009年,14%的8位嵌入式應用會代表36%的收益。而這14%的應用會使用64KB甚至更多的程序存儲空間。
從系統(tǒng)性能的角度來看,所有這些使得較舊的8位MCU逐漸失去競爭力。
2.不適宜32位處理器的場合
舊式CPU架構無法滿足當今的市場需求,為了解決這個問題,許多廠商升級至32位的處理平臺。對于需要32位處理能力的應用來說這無疑是最棒的選擇,但是許多設計師轉換到32位平臺并非最正確的選擇。使用32位MCU來解決8位和16位單片機的自身限制將會導致過高的成本。
大部分32位微控制器無法提供高速、高分辨率的模數(shù)(ADC)轉換,EMC性能通常較低,且ESD保護較弱。而8位和16位單片機在這些方面優(yōu)勢明顯。另外,強的IO驅動能力,可供選擇的多種內部、外部振蕩器,無需外部器件的片內電壓調整器等是8位和16位單片機的另一些優(yōu)點。
顯然,32位CPU包含比任何8位和16位CPU都要多的數(shù)字邏輯單元,這導致了高的制造成本。雖然使用一些特殊的半導體工藝可以降低成本,但是弊端是會導致較高的漏電流和靜態(tài)功耗。某些應用,像水表、燃氣表、收費公路電子標簽、安全系統(tǒng)等,在他們生命期中的大部分時間,CPU處于睡眠模式,即為停止狀態(tài)。這類應用的電池壽命必須在5-10年,所以這情況中,不可能將CPU從8位或者16位升級至32位處理器。如果想要提升系統(tǒng)性能只有采用別的方法。
這里有幾個定義需要說一下,
外設,顧名思義,就是IC芯片所接的能夠與IC通信的外部設備。早起由于IC集成工藝不發(fā)達,很多東西都是外設的,在此以DSP芯片為例,比如PWM、ADC、CAN等等,
原本都是需要芯片外接的,即使是現(xiàn)在,仍然有獨立的ADC芯片,比如ADS8364等等,但是現(xiàn)在,PWM、ADC等等東西都已經(jīng)集成在DSP芯片內,當然,
無論如何,芯片總還是會需要外接一些設備實現(xiàn)某種系統(tǒng),為了與那些外設相區(qū)別,就將集成在芯片內,但是又不屬于芯片本身(比如DSP,是一種微處理器,
因此芯片中不屬于微處理器的部分都是外設)的稱為“片上外設”。
片內、外設是兩個概念,片內指做成芯片的集成電路內部,簡稱片內;外設是外部設備的簡稱,是指集成電路芯片外部的設備。集成電路芯片與外部設備的連接一般需要專門的接口電路和總線的連接(包括控制總線路、地址總線和數(shù)據(jù)總線等)。
由于大規(guī)模集成電路的技術發(fā)展得很快,現(xiàn)在許多芯片在制造時已經(jīng)能夠將部分接口電路和總線集成到芯片內部。對于這部分電路與傳統(tǒng)的接口電路和總線是有區(qū)別的,為了加于區(qū)別可以稱之為片內外設,其含義是在集成電路芯片內部集成的用于與外部設備連接的接口電路和總線。
因此,簡單的說,“片內外設”是芯片內部用于與外部設備連接的接口電路和總線。
先附上一張計算機硬件組成圖片:
寄存器
寄存器是中央處理器內的組成部份。它跟CPU有關。寄存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、數(shù)據(jù)和位址。在中央處理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序計數(shù)器(PC)。在中央處理器的算術及邏輯部件中,包含的寄存器有累加器(ACC)。
存儲器
存儲器范圍最大,它幾乎涵蓋了所有關于存儲的范疇。你所說的寄存器,內存,都是存儲器里面的一種。凡是有存儲能力的硬件,都可以稱之為存儲器,這是自然,硬盤更加明顯了,它歸入外存儲器行列,由此可見——。
內存
內存既專業(yè)名上的內存儲器,它不是個什么神秘的東西,它也只是存儲器中的滄海一粟,它包涵的范圍也很大,一般分為只讀存儲器(ROM)和隨機存儲器(RAM),以及最強悍的高速緩沖存儲器(CACHE),只讀存儲器應用廣泛,它通常是一塊在硬件上集成的可讀芯片,作用是識別與控制硬件,它的特點是只可讀取,不能寫入。隨機存儲器的特點是可讀可寫,斷電后一切數(shù)據(jù)都消失,我們所說的內存條就是指它了。
緩存CACHE
緩存就是數(shù)據(jù)交換的緩沖區(qū)(稱作Cache),當某一硬件要讀取數(shù)據(jù)時,會首先從緩存中查找需要的數(shù)據(jù),如果找到了則直接執(zhí)行,找不到的話則從內存中找。由于緩存的運行速度比內存快得多,故緩存的作用就是幫助硬件更快地運行。
因為緩存往往使用的是RAM(斷電即掉的非永久儲存),所以在用完后還是會把文件送到硬盤等存儲器里永久存儲。電腦里最大的緩存就是內存條了,最快的是CPU上鑲的L1和L2緩存,顯卡的顯存是給顯卡運算芯片用的緩存,硬盤上也有16M或者32M的緩存。
CACHE是在CPU中速度非常塊,而容量卻很小的一種存儲器,它是計算機存儲器中最強悍的存儲器。由于技術限制,容量很難提升。
ROM、RAM的區(qū)別:
ROM(只讀存儲器或者固化存儲器)
RAM(隨機存取存儲器)
ROM和RAM指的都是半導體存儲器,ROM是Read Only Memory的縮寫,RAM是Random Access Memory的縮寫。ROM在系統(tǒng)停止供電的時候仍然可以保持數(shù)據(jù),而RAM通常都是在掉電之后就丟失數(shù)據(jù),典型的RAM就是計算機的內存。
RAM有兩大類,一種稱為靜態(tài)RAM(Static RAM/SRAM),當數(shù)據(jù)被存入其中后不會消失。SRAM速度非?,是目前讀寫最快的存儲設備了。當這個SRAM 單元被賦予0 或者1 的狀態(tài)之后,它會保持這個狀態(tài)直到下次被賦予新的狀態(tài)或者斷電之后才會更改或者消失。但是存儲1bit 的信息需要4-6 只晶體管。因此它也非常昂貴,所以只在要求很苛刻的地方使用,譬如CPU的一級緩沖,二級緩沖。另一種稱為動態(tài)RAM(Dynamic RAM/DRAM),DRAM 必須在一定的時間內不停的刷新才能保持其中存儲的數(shù)據(jù)。DRAM 只要1 只晶體管就可以實現(xiàn)。DRAM保留數(shù)據(jù)的時間很短,速度也比SRAM慢,不過它還是比任何的ROM都要快,但從價格上來說DRAM相比SRAM要便宜很 多,計算機內存就是DRAM的。
DRAM分為很多種,常見的主要有FPRAM/FastPage、EDORAM、SDRAM、DDR RAM、RDRAM、SGRAM以及WRAM等,這里介紹其中的一種DDR RAM。DDR RAM(Date-Rate RAM)也稱作DDR SDRAM,這種改進型的RAM和SDRAM是基本一樣的,不同之處在于它可以在一個時鐘讀寫兩次數(shù)據(jù),這樣就使得數(shù)據(jù)傳輸速度加倍了。這是目前電腦中用 得最多的內存,而且它有著成本優(yōu)勢,事實上擊敗了Intel的另外一種內存標準-Rambus DRAM。在很多高端的顯卡上,也配備了高速DDR RAM來提高帶寬,這可以大幅度提高3D加速卡的像素渲染能力。
ROM也有很多種,PROM是可編程的ROM,PROM和EPROM(可擦除可編程ROM)兩者區(qū)別是,PROM是一次性的,也就是軟件灌入后,就無法修 改了,這種是早期的產(chǎn)品,現(xiàn)在已經(jīng)不可能使用了,而EPROM是通過紫外光的照射擦出原先的程序,是一種通用的存儲器。另外一種EEPROM是通過電子擦出,價格很高,寫入時間很長,寫入很慢。
最初,把只能讀的存儲器叫做ROM(Read Only Memory),并且掉電后數(shù)據(jù)不會丟失。由于不能改寫,因而使用起來很不方便。隨著技術的進步,在ROM中使用一些新技術,就可以使它具有可以編程的功能。比較早的是熔絲型的可編程ROM,由于是通過熔斷熔絲來編程的,所以這類ROM編程后,就不能再寫了,是一次性的(OTP)。后來又出現(xiàn)了EPROM,是通過紫外線來擦除的,并且通過高壓來編程,這類ROM上面一般有一個透明的石英玻璃窗,看上去挺漂亮的,它就是用來給紫外線照射的。后來又出現(xiàn)了EEPROM,不用紫外線照射就可以擦除,因而可以直接在電路中編程。另外還有FLASH ROM,又可分為NOR FLASH和NAND FLASH。FLASH ROM一般有一個特點,就是寫數(shù)據(jù)時,可以將1改為0,而不能將0改為1,因而寫數(shù)據(jù)前需要擦除,擦除時將所有數(shù)據(jù)置1。
之所以依然叫做ROM,歸納一下,大概有幾個原因:
①不能像RAM那樣快速的寫;
②可能需要特殊的擦寫電壓;
③可能需要特殊的擦寫時序;
④可能需要在寫之前進行擦除操作;
⑤擦寫次數(shù)有限,不像RAM那樣可以隨意寫而不損壞;
⑥掉電后數(shù)據(jù)不會丟失;
⑦有些可寫的存儲器只能寫一次(OTP)。
舉個例子,手機軟件一般放在EEPROM中,我們打電話,有些最后撥打的號碼,暫時是存在SRAM中的,不是馬上寫入通過記錄(通話記錄保存在EEPROM中),因為當時有很重要工作(通話)要做,如果寫入,漫長的等待是讓用戶忍無可忍的。
FLASH存儲器又稱閃存,它結合了ROM和RAM的長處,不僅具備電子可擦出可編程(EEPROM)的性能,還不會斷電丟失數(shù)據(jù)同時可以快速讀取數(shù)據(jù) (NVRAM的優(yōu)勢),U盤和MP3里用的就是這種存儲器。在過去的20年里,嵌入式系統(tǒng)一直使用ROM(EPROM)作為它們的存儲設備,然而近年來 Flash全面代替了ROM(EPROM)在嵌入式系統(tǒng)中的地位,用作存儲Bootloader以及操作系統(tǒng)或者程序代碼或者直接當硬盤使用(U盤)。
目前Flash主要有兩種NOR Flash和NADN Flash。NOR Flash的讀取和我們常見的SDRAM的讀取是一樣,用戶可以直接運行裝載在NOR FLASH里面的代碼,這樣可以減少SRAM的容量從而節(jié)約了成本。NAND Flash沒有采取內存的隨機讀取技術,它的讀取是以一次讀取一快的形式來進行的,通常是一次讀取512個字節(jié),采用這種技術的Flash比較廉價。用戶 不能直接運行NAND Flash上的代碼,因此好多使用NAND Flash的開發(fā)板除了使用NAND Flah以外,還作上了一塊小的NOR Flash來運行啟動代碼。
一般小容量的用NOR Flash,因為其讀取速度快,多用來存儲操作系統(tǒng)等重要信息,而大容量的用NAND FLASH,最常見的NAND FLASH應用是嵌入式系統(tǒng)采用的DOC(Disk On Chip)和我們通常用的“閃盤”,可以在線擦除。
從兩個方面來回答:
一方面是cache的行為。Icache大多都是順序取指,碰到分支指令也會跳轉,而Dcache訪問的模式變化比較大.也就是前者所說的pattern的問題.指令只有讀和refill沒有寫,而數(shù)據(jù)有讀也有寫.最重要的是馮氏的結構是指令和數(shù)據(jù)分離.I和D在一起只有相互干擾.
另一個方面就是,物理設計上考慮:
一個union的cache,同時需要數(shù)據(jù)和指令的訪問,端口上是很難實現(xiàn)的。
所以一般在流水線的主干上,都是采用分離的icache和dcache.
非主干的L2 cache,從容量的角度考慮采用union的方式.
當然早期的也有不分離icache和dcache.因為早期的結構也簡單.
整個系統(tǒng)的層次結構如圖1所示,由ICache和DCache構成L1 Cache,以及和L1 Cache接口的L2 Cache,和L2 Cache接口的DRAM。其中L1 Cache和L2 Cache是在微處理器片內,而DRAM是作為主存,存在于片外。這跟目前主流的個人電腦的層次結構很相似。
cache高速緩沖存儲器一種特殊的存儲器子系統(tǒng),其中復制了頻繁使用的數(shù)據(jù)以利于快速訪問。存儲器的高速緩沖存儲器存儲了頻繁訪問的RAM位置的內容及這些數(shù)據(jù)項的存儲地址。當處理器引用存儲器中的某地址時,高速緩沖存儲器便檢查是否存有該地址。如果存有該地址,則將數(shù)據(jù)返回處理器;如果沒有保存該地址,則進行常規(guī)的存儲器訪問。因為高速緩沖存儲器總是比主RAM存儲器速度快,所以當RAM的訪問速度低于微處理器的速度時,常使用高速緩沖存儲器。
Cache(即高速緩沖存儲器(Cache Memory),是我們最常聽到的一個詞了。在老鳥們眼中,這個詞或許已沒有再談的必要,因為他們對Cache從設計的必要性到工作原理、工作過程等等都已了如指掌了;而對菜鳥朋友們而言,這些未必就很清楚。那么,它們到底是指的什么呢?不用急,下面就請隨筆者一起來全面認識Cache。
為什么要設計Cache?
我們知道,電腦的內存是以系統(tǒng)總線的時鐘頻率工作的,這個頻率通常也就是CPU的外頻(對于雷鳥、毒龍系列的處理器,由于在設計采用了DDR技術,CPU工作的外頻為系統(tǒng)總線頻率的兩倍)。但是,CPU的工作頻率(主頻)是外頻與倍頻因子的乘積。這樣一來,內存的工作頻率就遠低于CPU的工作頻率了。這樣造成的直接結果是:CPU在執(zhí)行完一條指令后,常常需要“等待”一些時間才能再次訪問內存,極大降了CPU工作效率。在這樣一種情況下,Cache就應運而生了!
CACHE:Cache是一種特殊的存儲器,它由Cache 存儲部件和Cache控制部件組成。Cache 存儲部件一般采用與CPU同類型的半導體存儲器件,存取速度比內存快幾倍甚至十幾倍。而Cache 控制器部件包括主存地址寄存器、Cache 地址寄存器,主存—Cache地址變換部件及替換控制部件等。至于它們各自又是怎樣工作的、有何作用等等,我想我們就沒有必要做進一步的研究,知道一般Cache分為L1 Cache(其中又分為數(shù)據(jù)Cache、代碼Cache)、L2 Cache就行了。
我們知道,CPU運行程序是一條指令一條指令地執(zhí)行的,而且指令地址往往是連續(xù)的,意思就是說CPU在訪問內存時,在較短的一段時間內往往集中于某個局部,這時候可能會碰到一些需要反復調用的子程序。電腦在工作時,把這些活躍的子程序存入比內存快得多的Cache 中。CPU在訪問內存時,首先判斷所要訪問的內容是否在Cache中,如果在,就稱為“命中”,此時CPU直接從Cache中調用該內容;否則,就稱為“不命中”,CPU只好去內存中調用所需的子程序或指令了。CPU不但可以直接從Cache中讀出內容,也可以直接往其中寫入內容。由于Cache的存取速率相當快,使得CPU的利用率大大提高,進而使整個系統(tǒng)的性能得以提升
早在486時代,主板上就設計了Cache插槽,用戶可以根據(jù)需要自己配置Cache;586級的CPU芯片中已集成了部分Cache,同時還保留了Cache插槽供用戶擴充,而到了Pentium Ⅱ時代后,Cache已全部集成到了CPU芯片中,主板上再也沒有Cache插槽,F(xiàn)在比較流行的CPU芯片中一般集成了至少16KB的代碼Cache 和16KB的數(shù)據(jù)Cache(作為L1 Cache),以及至少64KB的L2 Cache。
有的朋友可能會問,既然Cache的作用如此重要,那為么不把電腦的全部內存都變?yōu)镃ache,那樣不是更好嗎?其實對于這個問題,撇開價格因素,單就其實用性而言也是沒有必要的,畢竟,電腦在執(zhí)任務時,那種使用頻率非常高的子程序或指令不是很多的,因此那些使用頻率不太高的內容只須保存在速度相對較低的內存中就可以了!
在實際應用中,Cache,尤其是L2Cache對系統(tǒng)的性能,特別是對浮點運算能力有較大的影響。而我們知道,大部分游戲的流暢運行需要頻繁的浮點運算。因此,CPU運行游戲的性能的好壞與L2Cache的容量與速度有很大關系。
地址映像
·地址映像
所謂映象問題是指如何確定Cache中的內容是主存中的哪一部分的拷貝,即必須應用某種函數(shù)把主存地址映象到Cache中定位,也稱地址映象。當信息按這種方式裝入Cache中后,執(zhí)行程序時,應將主存地址變換為Cache地址,這個變換過程叫作地址變換。地址映象方式通常采用直接映象、全相聯(lián)映象、組相聯(lián)映象三種
1、直接映像
是指每個主存頁只能復制到某一固定的Cache頁中。直接映像的規(guī)律是:將主存的2048頁分為128組,每組有16頁,分別與Cache的16頁直接對應,即主存的第0頁、第16頁、第32頁……只能映像到Cache的第0頁。
2、全相聯(lián)映像
全相聯(lián)映像是指主存的每一頁可以映像可以映像到Cache的任意一頁。
3、組相聯(lián)映像
組相聯(lián)映像是直接映像與全相聯(lián)映像的折中方案,它將Cache分為若干組,如8組;每組若干頁,如2頁;同時將主存分為若干組,如255組;每組內的頁數(shù)與Cache的組數(shù)相同,如8頁。組相聯(lián)映像的規(guī)律是主存中的各頁與Cache的組號有固定的映像關系,但可自由映像到對應的Cache組中的任意一頁。即組間采用直接映像,而組內的頁為全相聯(lián)映像。
當CPU訪問Cache未命中時,應從主存中讀取信息,同時寫入Cache。若Cache未滿,則直接寫入;若Cache已滿,則需要進行替換。替換機構由硬件組成,并按替換算法進行設計,其作用是指出替換的頁號。常用的替換算法有先進先出算法(FIFO)和近期最少使用算法(LRU)。
1、讀操作
訪存時,將主存地址同時送主存和Cache,一則啟動對主存的讀操作,二則在Cache中按映像方式從中獲取Cache地址,并將主存標記與Cache標記比較:若相同,則訪問命中,從Cache中讀取數(shù)據(jù)。因為Cache速度比主存速度快,所以不等主存讀操作結束,即可繼續(xù)下一次訪存操作;若不相同,則訪問未命中,則從主存中讀取數(shù)據(jù),并考慮是否按某種替換算法更新Cache某頁的內容。
2、寫操作
將數(shù)據(jù)寫入主存有兩種方法,寫回法和些直達法。
寫回法:信息暫時只寫入Cache,并用標志加以注明,直到該頁內容需從Cache中替換出來時,才一次寫入主存。優(yōu)點是操作速度快,缺點是寫回主存前,主存中沒有這些內容,與Cache不一致,易造成錯誤。
寫直達法:信息在寫入Cahce時也同時寫入主存。優(yōu)點是主存與Cache始終保持一致,但速度慢。
緩存(cached)是把讀取過的數(shù)據(jù)保存起來,重新讀取時若命中(找到需要的數(shù)據(jù))就不要去讀硬盤了,若沒有命中就讀硬盤。其中的數(shù)據(jù)會根據(jù)讀取頻率進行組織,把最頻繁讀取的內容放在最容易找到的位置,把不再讀的內容不斷往后排,直至從中刪除!
緩沖(buffers)是根據(jù)磁盤的讀寫設計的,把分散的寫操作集中進行,減少磁盤碎片和硬盤的反復尋道,從而提高系統(tǒng)性能。linux有一個守護進程定期清空緩沖內容(即寫如磁盤),也可以通過sync命令手動清空緩沖。舉個例子吧:我這里有一個ext2的U盤,我往里面cp一個3M的MP3,但U盤的燈沒有跳動,過了一會兒(或者手動輸入sync)U盤的燈就跳動起來了。卸載設備時會清空緩沖,所以有些時候卸載一個設備時要等上幾秒鐘。
修改/etc/sysctl.conf中的vm.swappiness右邊的數(shù)字可以在下次開機時調節(jié)swap使用策略。該數(shù)字范圍是0~100,數(shù)字越大越傾向于使用swap。默認為60,可以改一下試試。兩者都是RAM中的數(shù)據(jù)。簡單來說,buffer是即將要被寫入磁盤的,而cache是被從磁盤中讀出來的!
buffer是由各種進程分配的,被用在如輸入隊列等方面,一個簡單的例子如某個進程要求有多個字段讀入,在所有字段被讀入完整之前,進程把先前讀入的字段放在buffer中保存!
cache經(jīng)常被用在磁盤的I/O請求上,如果有多個進程都要訪問某個文件,于是該文件便被做成cache以方便下次被訪問,這樣可提供系統(tǒng)性能。
通常人們所說的Cache就是指緩存SRAM。 SRAM叫靜態(tài)內存,“靜態(tài)”指的是當我們將一筆數(shù)據(jù)寫入SRAM后,除非重新寫入新數(shù)據(jù)或關閉電源,否則寫入的數(shù)據(jù)保持不變。
有了高速緩存,可以先把數(shù)據(jù)預寫到其中,需要時直接從它讀出,這就縮短了CPU的等待時間。高速緩存之所以能提高系統(tǒng)的速度是基于一種統(tǒng)計規(guī)律,主板上的控制系統(tǒng)會自動統(tǒng)計內存中哪些數(shù)據(jù)會被頻繁的使用,就把這些數(shù)據(jù)存在高速緩存中,CPU要訪問這些數(shù)據(jù)時,就會先到Cache中去找,從而提高整體的運行速度。一般說來,256K的高速緩存能使整機速度平均提高10%左右!
主板上通常都會提供256K到1M的緩存。在CPU內部也有高速緩存,如486CPU有8K的高速緩存,Pentium有16K的高速緩存。Pentium II有32K 一級緩存,AMD K6-2中有64K的一級Cache,AMD K6-3中有64K 的一級 Cache,和256K 的二級Cache,Cyrix MII 中有64K的Cache!
為了區(qū)分它們,CPU內部的緩存叫內部高速緩存(Internal Cache)或一級高速緩存,主板上的緩存叫外部高速緩存(External Cache)或二級高速緩存。不過現(xiàn)在的Pentium II 的CPU已經(jīng)將主板上的二級緩存封裝在CPU的盒子中,AMD K6-3的CPU內部也集成了256K的二級Cache,對于這類CPU來說,主板上提供的已是三級緩存了。
上一篇:C語言循環(huán)結構
下一篇:C語言之順序結構