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